先进后出,使用堆栈处理. 缺点:速度慢。 12ms
Stack stack = new Stack(); // 创建堆栈对象
stack.push(item); // 把项压入栈顶
stack.pop(item); //把项移除栈顶
stack. empty(); //判断栈空 boolean
stack.peek(); //查看栈顶而不移除,返回object 类型
printStack(stack); //显示栈中的所有元素
Enumeration items = stack.elements(); // 得到 stack 中的枚举对象
while (items.hasMoreElements()){} //显示枚举(stack ) 中的所有元素
class Solution {
public boolean isValid(String s) {
Stack stack = new Stack();
if(s.length()==0){
return true;
}
for(int i=0;;i++){
if(stack.empty() && i==s.length()){
return true;
}
if(i<s.length()){
if(!stack.empty()){
if(( (Character)stack.peek()=='(' && s.charAt(i)==')') ||( (Character)stack.peek()=='['&& s.charAt(i)==']')
|| ( (Character)stack.peek()=='{' && s.charAt(i)=='}')){
stack.pop();
continue;
}
else{
stack.push(s.charAt(i));
}
}else{
stack.push(s.charAt(i));
continue;}
}
else{break;}
}
return false;
}
}
Leetcode 高分解决方案:
class Solution {
public boolean isValid(String s)
{
char[] a= new char[s.length()/2+1];
int top=0;
for(int i =0; i<s.length();i++)
{switch (s.charAt(i))
{
case '(':
case '{':
case '[':
a[top++]=s.charAt(i);
if (top>= s.length()/2+1)
return false;
break;
case ')':
if(top>0)
if (a[top-1] == '(')
{
top--;
break;
}
return false;
case '}':
if(top>0)
if (a[top-1] == '{')
{
top--;
break;
}
return false;
case ']':
if(top>0)
if (a[top-1] == '[')
{
top--;
break;
}
return false;
default:
return false;
}
}
if (top>0)
return false;
return true;
}
}
参考: