day11打卡
总体都比较简单。
时间复杂度:O(N),空间复杂度:O(N)
class Solution {
public:
bool isValid(string s) {
if(s.size() % 2 == 1) return false;
stack<char> st;
for(auto& e : s)
{
if(e == '(') st.push(')');
else if(e == '[') st.push(']');
else if(e == '{') st.push('}');
else if(st.empty() || st.top() != e) return false;
else st.pop();
}
return st.empty();
}
};
时间复杂度:O(N),空间复杂度:O(1)
class Solution {
public:
string removeDuplicates(string s) {
string st;
for(auto& e : s)
{
if(st.empty() || st.back() != e) st.push_back(e);
else if(st.back() == e) st.pop_back();
}
return st;
}
};
时间复杂度:O(N),空间复杂度:O(N)
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> st;
for(auto& e : tokens)
{
if(e == "+" || e == "-" || e == "*" || e == "/")
{
//主要先后顺序,x是符号右边的数,y是符号左边的数
int x = st.top();
st.pop();
int y = st.top();
st.pop();
switch(e[0])
{
case '+':
st.push(y + x);
break;
case '-':
st.push(y - x);
break;
case '*':
st.push(y * x);
break;
case '/':
st.push(y / x);
break;
}
}
else
{
st.push(stoi(e));
}
}
return st.top();
}
};