题目描述见Leetcode1003题
思路:第一眼看到这个题目,只想着暴力搜索,没有联想到书上栈的应用。
解法一:暴力搜索
利用string类的find()函数找到字符串
class Solution {
public:
bool isValid(string s) {
bool flag == 1;
while(flag == 1 && s != ""){
flag == 0;
int pos = s.find("abc");
if(pos != s.npos){
s = s.erase(pos,3);
flag = 1;
}
}
if(s == "")
return true;
else
return false;
}
};
*就是用各种函数硬解,所以时间复杂度比较高
解法二:
使用栈,将字符串从前到后依次压进栈,如果栈尾三个元素是“abc”,就把这三个元素弹出栈
class Solution {
public:
bool isValid(string s) {
string stk;
for(auto c : s){
stk.push_back(c);
if(stk.size()>=3 && stk.substr(stk.size()-3,3) == "abc")
stk.erase(stk.end()-3,stk.end());
}
return stk.empty();
}
};
*思路很简单,但是写法很值得探讨