給定有效字串"abc"
。
對於任何有效的字串v
,我們可以將v
分成兩個部分x
和y
,使得x + y
(x
與y
連線)等於v
。(x
或y
可以為空。)那麼,x + "abc" + y
也同樣是有效的。
例如,如果s = "abc"
,則有效字串的示例是:"abc"
,"aabcbc"
,"abcabc"
,"abcabcababcc"
。無效字串的示例是:"abccba"
,"ab"
,"cababc"
,"bac"
。
如果給定字串s
有效,則返回true
;否則,返回false
。
示例 1:
輸入:"aabcbc"輸出:true解釋:從有效字串 "abc" 開始。示例 2:然後我們可以在 "a" 和 "bc" 之間插入另乙個 "abc",產生 "a" + "abc" + "bc",即 "aabcbc"。
輸入:"abcabcababcc"輸出:true解釋:"abcabcabc" 是有效的,它可以視作在原串後連續插入 "abc"。示例 3:然後我們可以在最後乙個字母之前插入 "abc",產生 "abcabcab" + "abc" + "c",即 "abcabcababcc"。
輸入:"abccba"輸出:false示例 4:
輸入:"cababc"輸出:false
1 <= s.length <= 20000
s[i]
為'a'
、'b'
、或'c'
解析:
因為最近兩天一直在做關於棧的題目,所以拿到題目首先想到的是用棧實現。但是如果在面試中,可能就不會想到,還是自己掌握的不夠熟練。這個題目感覺和消消樂差不多,如果有連著的abc,則消除。上邊的資料自動往下落,然後繼續刪除,如果存在異常的情況,如bac,cba這種的,就說明不能完全消除,則返回false。如果字串的長度小於3,也返回false。
**:
bool isvalid(string s)
}else
}} if (cstack.empty())
return true;
return false;
}
更優的方法是用vector模擬棧,因為可以訪問前邊的元素。
他山之石:
bool isvalid(string s)
else
}return stack.size() == 0;
}
Leetcode 1003 檢查替換後的詞是否有效
給定有效字串 abc 對於任何有效的字串v,我們可以將v分成兩個部分x和y,使得x y x和y連線 等於v。x或y可以為空 那麼,x abc y也同樣是有效的。例如,如果s abc 則有效字串的示例是 abc aabcbc abcabc abcabcababcc 無效字串示例是 abccba ab ...
LeetCode 1003 檢查替換後的詞是否有效
給定有效字串 abc 對於任何有效的字串 v,我們可以將 v 分成兩個部分 x 和 y,使得 x y x 與 y 連線 等於 v。x 或 y 可以為空。那麼,x abc y 也同樣是有效的。例如,如果 s abc 則有效字串的示例是 abc aabcbc abcabc abcabcababcc 無效...
LeetCode1003 檢查替換後的詞是否有效
一.題目 題目 示例 二.方法一 棧 解題思路 將列表中的元素依次進棧 如果棧頂的3個元素一次是 c b a 則彈出這3個元素 當遍歷完後,棧為空,則返回true 否則,返回false 解題 def isvalid self,s str bool stack for ele in s iflen s...