2013-11-02 163 views
-3

我有一些特定的任務。我們有像「(()[] <>)」或類似的東西。 在我面試問題中的一個問題是如何檢查字符串是正確還是不正確。 例如:「()[] <>」 - true,「([)」 - false,「[(])」 - false,「([<>])」 - true。 非常感謝你們!檢查字符串是否正確

+2

。提示:使用 –

+0

嘗試使用正則表達式類 – KernelPanic

+0

必須同意@JBNizet。堆棧絕對是解析表達式的最合適的方法,可以用正則表達式做同樣的事情,但需要大量的lookahead和lookbeheads,這永遠不是一個好方法。 –

回答

4

您將需要使用堆棧來處理此問題。

當你找到一個新的左括號時,你會推入堆棧。

當您找到右括號時,請查看堆棧頂部的元素 - 並查看它是否匹配。即如果你剛剛找到一個「)」,那麼就是堆棧中的最後一個元素「(」?

如果是,那麼彈出該堆棧的元素,如果不是,那麼你得到「不正確」的字符串,你可以停止處理任何進一步的

而且,一旦你到了字符串的結尾,如果有什麼事,我們知道有一個未終止的括號堆棧上