力扣刷题——20. 有效的括号
20. 有效的括号
栈
每次左符号进栈,遇到右符号,出栈,右符号与出栈的符号匹配即可。
注意有些细节,比如最后栈中左括号要全部出栈,也不能先出现右括号
package leetcode;
import java.util.LinkedList;
public class Solution {
public boolean isValid(String s) {
char[] left = {'(', '[', '{'};
char[] right = {')', ']', '}'};
LinkedList<Integer> stack = new LinkedList<>();
for (int i = 0; i < s.length(); ++i) {
//左符号进栈
if (s.charAt(i) == left[0]) {
stack.push(0);//入栈
} else if (s.charAt(i) == left[1]) {
stack.push(1);//入栈
} else if (s.charAt(i) == left[2]) {
stack.push(2);//入栈
} else if (!stack.isEmpty()) {
//如果符号不匹配
if (s.charAt(i) != right[stack.pop()]) {
return false;
}
} else {//这种情况是先有了右括号
return false;
}
}
//最后栈为空才代表匹配完所有符号
return stack.isEmpty() ? true : false;
}
}
posted on 2023-02-25 10:51 pumpkinsBig 阅读(18) 评论(0) 收藏 举报
浙公网安备 33010602011771号