标签:valid parentheses stack hashmap
描述:
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();
}标签:valid parentheses stack hashmap
原文地址:http://blog.csdn.net/mnmlist/article/details/45887137