20.有效的括号
题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
class Solution {
public boolean isValid(String s) {
int length=s.length();
if(length==0){
return true;
}
if(s.length()%2!=0){
return false;
}
Stack stack=new Stack();
String str="";
for(int i=0;i<length;i++){
str=s.substring(i,i+1);
if(stack.empty()){
stack.push(str);
}else{
String st=(String)stack.peek();//取出栈顶元素
switch(str){
case ")" : {if(st.equals("(")?true:false){stack.pop(); }else stack.push(str);break;}
case "}" : {if(st.equals("{")?true:false){stack.pop(); }else stack.push(str);break;}
case "]" : {if(st.equals("[")?true:false){stack.pop(); }else stack.push(str);break;}
default : stack.push(str);
}
}
}
if(stack.empty()) return true;
return false;
}
}
class Solution {
public boolean isValid(String s) {
char[] cs=s.toCharArray();
if(s.length()==0){
return true;
}
if(s.length()%2!=0){
return false;
}
Stack stack=new Stack();
for(char c:cs){
if(stack.empty()) {
stack.push(c);
}else if(c==')'&&(char)stack.peek()=='(') stack.pop();
else if(c==']'&&(char)stack.peek()=='[') stack.pop();
else if(c=='}'&&(char)stack.peek()=='{') stack.pop();
else stack.push(c);
}
if(stack.empty()){
return true;
}
return false;
}
}
class Solution {
public boolean isValid(String s) {
LinkedList<Character> stack = new LinkedList<>();
for (char c : s.toCharArray()) {
if (c == '[') stack.push(']');
else if (c == '(') stack.push(')');
else if (c == '{') stack.push('}');
else if (stack.isEmpty() || c != stack.pop()) return false;
}
return stack.isEmpty();
}
}