题目描述:
Given a string containing just the characters'(',')','{','}','['and']', determine if the input string is valid.
The brackets must close in the correct order,"()"and"()[]{}"are all valid but"(]"and"([)]"are not.
思路解析:
- 首先看长度是否符合最低标准0-1;
- 使用栈进行括号匹配
- 然后如果是左括号的话,直接入栈
- 如果是右括号的话,就要看栈中弹出的元素是不是能匹配,不能就是直接false了
- 最后注意栈为空则是true
代码:
import java.util.*;
public class Solution {
public boolean isValid(String s) {
if(s.length()==0 ||s.length()==1 )//不够匹配的字符长度
return false;
Stack<Character> x = new Stack<Character>();
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='('||s.charAt(i)=='['||s.charAt(i)=='{'){
x.push(s.charAt(i));
}else{
if(x.size()==0)
return false;
char p = x.pop();//char类型的
if(s.charAt(i)==')'){
if(p!='(')
return false;
}else if(s.charAt(i)==']'){
if(p!='[')
return false;
}else if(s.charAt(i)=='}'){
if(p!='{')
return false;
}
}
}
return x.size()==0;//栈的最后必须为空啊!!!
}
}