发现左括号,添加右括号很巧妙,感觉思维没转变过来,就像按着常识解
class Solution {
public:
bool isValid(string s) {
stack<int>a;
for(int i=0;i<s.size();i++)
{
if(s[i]=='(')
a.push(')');
else if(s[i]=='[')
a.push(']');
else if(s[i]=='{')
a.push('}');
else if(a.empty()||a.top()!=s[i])
return false;
else
a.pop();
}
return a.empty();
}
};
1047. 删除字符串中的所有相邻重复项 - 力扣(Leetcode)
简单题,正常理解
class Solution {
public:
string removeDuplicates(string s) {
stack<int>a;
for(int i=0;i<s.size();i++)
{
if(a.empty()||a.top()!=s[i])
a.push(s[i]);
else
a.pop();
}
string res="";
while(!a.empty())
{
res+=a.top();
a.pop();
}
reverse(res.begin(), res.end());
return res;
}
};
stoll:此函数将在函数调用中作为参数提供的字符串转换为long long int
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<long long>a;
for(int i=0;i<tokens.size();i++)
{
if(tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/")
{
long long num1=a.top();
a.pop();
long long num2=a.top();
a.pop();
if(tokens[i]=="+")
a.push(num2+num1);
if(tokens[i]=="-")
a.push(num2-num1);
if(tokens[i]=="*")
a.push(num2*num1);
if(tokens[i]=="/")
a.push(num2/num1);
}
else
a.push(stoll(tokens[i]));
}
return a.top();
}
};