【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。
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 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解
- LeetCode [Day 5] Longest Palindromic Substring 题解
- LeetCode [Day 6] ZigZag Conversion 题解