正確匹配的最長的括號子串

2021-06-18 03:01:47 字數 601 閱讀 9087

分析:使用字串進出棧來模擬括號的匹配,棧中儲存沒有進行匹配的字串,掃瞄字串,對於第i個字元,如果該字元為『(』,則進棧,如果該字元為')',並且棧頂字元是『(』,則進行匹配,否則不匹配,字元進棧。對於進行匹配的字元,判斷以該右括號結尾的最大匹配子串(最大匹配子串即為該右括號向前到第乙個未匹配字元之間的子串)比當前已找到的最長匹配子串長,此時更新最長匹配子串。

所以需要記錄未匹配字元及未匹配字元在字串行中的位置,所以堆疊元素型別:

struct entry

};

**:

//乙個由'('和')'組成的字串序列,求出其中最長的正確匹配子串,如((()()中是()()

char* maxvalidsequence(const char* seq) else

delete entry;

} }while (top>0)

delete stack;

maxvalidseq[maxvalidcount] = '\0';

return maxvalidseq;

}

最長匹配括號子串行問題

給定乙個字串只包含 和 輸出其中最長的括號正確匹配的子串行的長度。輸入輸出 2 4 2 8以下將介紹三種複雜度為o n 的演算法 該演算法利用了棧來遍歷可能的匹配的括號子串行,遍歷的同時找出最長的子串行。遍歷不會遍歷所有的匹配括號子串行,併排的一些括號只有包含最左邊括號的子串行被遍歷,最長的括號子串...

每日一練之最長的括號子串

括號要是有效的,必定是成對出現的。比如乙個長度為 7 的字串,我們可以先以 6 個字元為視窗進行滑動判斷,如果 6 個字元沒有匹配的,再以 4 個字元為視窗進行滑動判斷。但是要超時。bool ismatch string str if s.empty return true return false...

LeetCode 最長匹配括號字串

最長括號匹配長度。如果是 是否 的話,題目是easy,一旦是找最長,那就是hard難度了。棧記錄當前的 位置 關鍵是在斷開的位置,之後可能是全新的開始 也可能是並列的開始 要記錄長度,其實這就要求棧中不是括號,而是位置資訊。棧中的記錄為 看 下方 class solution def longest...