这是leetcode上的题。
给定一个字符串,只包含字符“(”、“””、“{”、“}”、“[”和“”),确定输入字符串是否有效。
括号必须以正确的顺序关闭,“()”和“()”{“}”都是有效的,但“()和[([ ] ] ] ]不是。
主要应用的是栈的知识点。开始的时候进行压栈,后期进行弹栈比较,这个思路很经典,个人觉得c语言实现更好理解一些
具体代码如下:
public static boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for(Character c:s.toCharArray()){
if(c=='('){
stack.push(')');
}
else if(c=='{'){
stack.push('}');
}
else if(c=='['){
stack.push(']');
}else if(stack.isEmpty()||stack.pop()!=c){
return false;
}
}
return stack.isEmpty();
}
java实现代码不是原创。刚开始混淆了if和else的关系debug懵逼了,还好后面想明白了。
欢迎加入java交流群691761026交流学习