有效的括号
2021-01-28 本文已影响0人
Tank_Mao
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
下面是我自己写的答案,希望大佬们不吝指教!
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
//遍历字符串s
for(int i = 0; i < s.length(); i++){
//若是左括号,压入栈
if(s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{'){
stack.push(s.charAt(i));
}
//若是遍历到右括号时,stack为空,说明左括号比右括号少
else if(stack.empty()){
System.out.println("左括号比右括号少!");
return false;
}
//若是右括号,对比栈顶元素与s.charAt(i)是否匹配,若匹配,弹出栈顶元素;否则,return false.
else if((stack.peek() == '(' && s.charAt(i) == ')') || (stack.peek() == '[' && s.charAt(i) == ']') || (stack.peek() == '{' && s.charAt(i) == '}') ){
stack.pop();
}
else
return false;
}
//遍历结束后,若stack不为空,说明左括号比右括号多
if(!stack.empty()){
System.out.println("左括号比右括号多!");
return false;
}
return true;
}
}