分析:使用字串進出棧來模擬括號的匹配,棧中儲存沒有進行匹配的字串,掃瞄字串,對於第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...