您的位置:首页 > 其它

【LeetCode】之Valid Parentheses

2015-09-07 09:09 399 查看
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.

此题的目的在于判断给定的字符串是不是一串有效的组合。比如[]{()}是有效的组合。[)[]}是无效的组合。

思路:

1.取出字符串中的每个字符;

2.如果属于“([{”,则放入栈stack中,如果属于“)]}”,则取出栈顶的字符与当前字符进行比较;

3.若栈顶字符与当前字符相等,则栈顶字符出栈,继续下一个字符判断;

4.若栈顶字符与当前字符不相等,则直接返回false;

5.最后循环走完,则返回stack.empty(),而不是true;

这样判断是因为当字符串是“(”时,for循环压栈一次后就跳出循环,最后判断栈是否为空,为空,则返回true,否则返回false。

class Solution {
public:
bool isValid(string s) {
string left = "([{";
string right = ")]}";
stack<char> stack;
for(auto c : s){
if(left.find(c) != string::npos){//string::npos用来表示不存在的位置
stack.push(c);
}
else{
if(stack.empty() || stack.top() != left[right.find(c)]){
return false;
}
else{
stack.pop();
}
}
}
return stack.empty();
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode