您的位置:首页 > 其它

小白笔记--------------------------leetcode(20. Valid Parentheses )

2017-04-06 11:28 399 查看
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.

这道题用到了栈,遍历字符串,将所有左括号压入栈中,这里有个重要的点,那就是右括号总是与离他最近的左括号配对,

所以接下来找到右括号之后,直接查询栈顶,如果配对则推出,不配对则不做操作,最后判断栈是否为空,也就是全部配对

成功,来判断最终结果。

代码:
public class Solution {
public boolean isValid(String s) {
boolean result = true;
if(s.length() % 2 != 0){
return false;
}
Stack a = new Stack();
char[] b = s.toCharArray();
for(int i = 0; i < s.length();i++){//全部压入栈中
if(b[i] == '(' || b[i] == '{' || b[i] == '['){
a.push(b[i]);
}
if(b[i] == ')' || b[i] == '}' || b[i] == ']' ){
if(a.empty()){
result = false;
}else{
if(((char)a.peek() + 1 == b[i]) || ((char)a.peek() + 2 == b[i])){
a.pop();
}
}
}
}
if(a.empty()){
result = true;
}else{
result = false;
}

return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: