LeetCode第20题,难度简单。因为有些是中文网做的,有些是之前英文网做的,所以有些题目虽然内容一样,但是题目序号是不一样的,我这里采用的是中文网的题目序号。
原题地址:https://leetcode-cn.com/problems/valid-parentheses/
题目描述:
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
这题从题意上来看很简单,只需要不停的判断字符串中的大中小三中类型的括号是否能够匹配。
所以在解题时,采用了栈这种数据结构。遍历字符串,如果是左括号,就入栈;否则就把顶上的括号出栈,然后和当前的字符匹配看是不是刚好相反的括号。
如果到最后栈里面没有任何元素,那么一定是有效的括号字符串。
中文官网题解:
https://leetcode-cn.com/problems/valid-parentheses/solution/
个人题解:
class Solution {
public boolean isValid(String s) {
Deque<Character> stack = new LinkedList<>();
for (char c : s.toCharArray()) {
if (c == '(' || c == '[' || c == '{') {
stack.push(c);
} else {
if (stack.isEmpty()) {
return false;
}
char cs = stack.pop();
if ((cs == '(' && c != ')')
|| (cs == '[' && c != ']')
|| (cs == '{' && c != '}')) {
return false;
}
}
}
return stack.isEmpty();
}
}
结果:
从结果上面来看,还是可以接受的,只用时5ms,超过了大部分提交。