class Solution {
public:
bool isValid(string s) {
stack<int> my_s;
char c;
for(int i = 0 ; i < s.length() ; i++)
{
if(s[i] == '(' || s[i] == '[' || s[i] == '{')
{
my_s.push(s[i]);
}
else
{
if(my_s.size() == 0)
{
return 0;
}
switch (s[i])
{
case ')':
c = my_s.top();
my_s.pop();
if(c != '(')
{
return 0;
}
break;
case ']':
c = my_s.top();
my_s.pop();
if(c != '[')
{
return 0;
}
break;
case '}':
c = my_s.top();
my_s.pop();
if(c != '{')
{
return 0;
}
break;
}
}
}
if(my_s.size() == 0)
{
return 1;
}
return 0;
}
};
简单小题
class Solution {
public:
string removeDuplicates(string s) {
stack <char> a;
stack <char> b;
int j = 0;
string res;
for(int i = 0 ; i < s.length() ;i++)
{
if(!a.empty() && s[i] == a.top())
{
a.pop();
}
else
a.push(s[i]);
}
int len = a.size();
for(int i = 0 ; i < len ;i++)
{
b.push(a.top());
a.pop();
}
res.resize(len);
for(int i = 0 ; i < len ; i++)
{
res[i] = b.top();
b.pop();
}
return res;
}
};
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack <int> a;
int front;
int back;
string my_token;
for(int i = 0; i < tokens.size() ; i++)
{
my_token = tokens[i];
if(my_token == "+" || my_token == "-" || my_token == "*" || my_token == "/" )
{
back = a.top();
a.pop();
front = a.top();
a.pop();
switch(my_token[0])
{
case '+':
a.push(front + back);
break;
case '-':
a.push(front - back);
break;
case '*':
a.push(front * back);
break;
case '/':
a.push(front / back);
break;
}
}
else
{
a.push(stoi(my_token, 0 ,10));
}
}
return a.top();
}
};
这个要注意string到int的转化,以及string的语法