您的位置:首页 > 其它

leetcode_Valid Parentheses

2015-05-21 09:14 302 查看
描述:

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.
思路:

很简单的字符串匹配问题,直接用栈就可以实现,为使程序更加高效,当要匹配的字符种类比较多的时候可以考虑用HashMap来保存匹配对

代码:

用if else来比较匹配对

public  boolean isValid(String s) {
if(s==null||s.length()==0)
return true;
Stack<Character> st=new Stack<Character>();
char ch;
int len=s.length();
for(int i=0;i<len;i++)
{
ch=s.charAt(i);
if(!st.empty())
{
if(ch==')'&&st.peek()=='(')
{
st.pop();
}else if(ch==']'&&st.peek()=='[')
{
st.pop();
}
else if(ch=='}'&&st.peek()=='{')
{
st.pop();
}else
st.push(ch);
}else
st.push(ch);

}
if(!st.empty())
return false;
return true;

}


用HashMap来保存匹配对

public boolean isValid(String s) {
if (s == null || s.length() == 0)
return true;
Stack<Character> st = new Stack<Character>();
Map<Character, Character> map = new HashMap<Character, Character>();
map.put('(', ')');
map.put('{', '}');
map.put('[', ']');
int len=s.length();
for (int i = 0; i < len; i++) {
if (!st.empty()&&map.containsKey(st.peek())&&s.charAt(i) == map.get(st.peek())) {
st.pop();
}else
st.push(s.charAt(i));
}
return st.empty();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: