一、20有效的括号
class Solution {
public:
bool isValid(string s) {
stack<char> st;
if(s.size() % 2 == 1){
return false;
}
for(int i = 0;i < s.size();i++){//s与st注意区分
if(s[i] == '('){//s与st注意区分
st.push(')');
}
else if(s[i] == '['){
st.push(']');
}
else if(s[i] == '{'){
st.push('}');
}
else if(st.empty() || st.top()!= s[i]){
return false;
}
else st.pop();//大哥循环的条件啊! st.top() 与 s[i]相等,栈弹出元素
}
return st.empty();//能够返回true or false
}
};
二、1047.删除字符串中的所有相邻重复项
class Solution {
public:
string removeDuplicates(string s) {
stack<char> st;
for(char si:s){
if(st.empty() || si != st.top()){
st.push(si);
}
else{
st.pop();
}
}
string result="";
while(!st.empty()){
result+=st.top();//按个取出字符串最顶端
st.pop();//逐步弹出字符串的顶端
}
reverse(result.begin(),result.end());//翻转字符串
return result;
}
};