力扣20—有效的括号
题意
题解
class Solution
{
public:
bool is_left(char ch)
{
return ch=='('||ch=='['||ch=='{';
}
bool is_match(char left,char right)
{
switch(right)
{
case ')':
if(left=='(')
return true;
break;
case ']':
if(left=='[')
return true;
break;
case '}':
if(left=='{')
return true;
break;
default:
return false;
}
return false;
}
bool isValid(string s)
{
if(s.size()%2==1)
return false;
stack<char> st;
for(char ch:s)
{
if(is_left(ch))
st.push(ch);
else
{
if(st.empty())
return false;
char temp=st.top();//左括号
st.pop();
if(is_match(temp,ch))
continue;
else
return false;
}
}
if(st.empty())
return true;
else
return false;
}
};
力扣232—用栈实现队列
题意
题解
class MyQueue
{
private:
stack<int> st1;
stack<int> st2;
public:
MyQueue()
{
}
//将元素 x 推到队列的末尾
void push(int x)
{
st1.push(x);
}
//从队列的开头移除并返回元素
int pop()
{
if(st2.empty())
{
while(!st1.empty())
{
int temp=st1.top();
st1.pop();
st2.push(temp);
}
}
int res=st2.top();
st2.pop();
return res;
}
//返回队列开头的元素
int peek()
{
if(st2.empty())
{
while(!st1.empty())
{
int temp=st1.top();
st1.pop();
st2.push(temp);
}
}
return st2.top();
}
//如果队列为空,返回 true ;否则,返回 false
bool empty()
{
return st1.empty()&&st2.empty();
}
};