Valid Parentheses[LeetCode]
Analysis
周末下午日常刷题啦~ 马上就要放寒假了,期待ing
Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.
The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not.
这道题主要是考察我们对stack的使用,首先输入是一串只包含“()[]{}”的字符串,所以我们遍历字符串,如果s[i]不是’)’, ‘]’, ‘}’的话就把它压入栈内,相反如果s[i]是’)’, ‘]’, ‘}’中的一个的话,那么我们就要取栈顶元素与之匹配,如果匹配不成功则为 unvalid。最后要注意的是,遍历完字符串s之后,要判断一下栈是否为空,如果不为空则说明有些符号并没有匹配成功,则s是unvalid。
借着这道题重温了一下stack里的一些函数,比如size, empty, pop, push, top…
implement
@Cherry Ye
class Solution {
public:
bool isValid(string s) {
int len = s.length();
char tmp;
stack<char> myStack;
for(int i=0; i<len; i++){
if(s[i]!=')' && s[i]!='}' && s[i]!=']')
myStack.push(s[i]);
else{
if(myStack.empty())
return false;
tmp = myStack.top();
if(s[i]==')'){
if(tmp=='(')
myStack.pop();
else
return false;
}
else if(s[i]=='}'){
if(tmp=='{')
myStack.pop();
else
return false;
}
else if(s[i]==']'){
if(tmp=='[')
myStack.pop();
else
return false;
}
}
}
if(!myStack.empty())
return false;
else
return true;
}
};