题目
给定一个只包括 (,),{,},[,] 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
示例 2:
示例 3:
示例 4:
示例 5:
思路
这道题一个简洁的解法就是使用栈.只要属于左括号的,我们就将它入栈;只要是属于右括号的,我们就将栈中的元素取出,看看两者是不是一对,如果不是,说明不是有效的括号;
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public bool IsValid(string s) { Stack<char> stack = new Stack<char>(); for (int i = 0; i < s.Length; i++) { if (s[i] == '(' || s[i] == '{' || s[i] == '[') { stack.Push(s[i]); } else { if (stack.Count == 0) { return false; } else { char symbol = stack.Pop(); if (s[i] == ')' && symbol != '(' || s[i] == ']' && symbol != '[' || s[i] == '}' && symbol != '{') { return false; } } }
} return stack.Count == 0; }
|