【题目】
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.
【思路】
判断一个由括号组成的字符串是否合法,要求括号必须正确打开,并顺序关闭,即,
1、必须左括号先出现
2、后打开的括号要先关闭
用一个List来模拟栈,top指向栈顶元素,O(n)时间内即可完成
【Java代码】
public class Solution_20_Valid_Parentheses {
public boolean isValid(String s){
boolean result = true;
List<String> stack = new ArrayList<String>();
int top = -1;
for(int i = 0 ; i < s.length() ; i++){
switch(s.charAt(i)){
case '(':
top++;
stack.add(top,"(");
break;
case ')':
if(top > -1 && stack.get(top) == "(")
top--;
else
return false;
break;
case '[':
top++;
stack.add(top,"[");
break;
case ']':
if(top > -1 && stack.get(top) == "[")
top--;
else
return false;
break;
case '{':
top++;
stack.add(top,"{");
break;
case '}':
if(top > -1 && stack.get(top) == "{")
top--;
else
return false;
break;
}
}
if(top != -1)
return false;
return result;
}
}