您的位置:首页 > 其它

[LeetCode] 20. Valid Parentheses ☆

2017-02-18 17:32 393 查看
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.

解法:

  采用栈方法,遍历字符串,对于每个字符:

如果属于"{[("之一,压入栈中。

如果属于")]}"之一,此时若栈为空(容易忽略),或者栈顶字符与其不匹配,返回false。

  遍历结束后,如果栈为空,返回true;否则返回false。

public class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
if ("{[(".contains(s.substring(i, i + 1))) {
stack.push(s.charAt(i));
} else if (")]}".contains(s.substring(i, i + 1))) {
if (stack.empty() || !match(stack.pop(), s.charAt(i))) {
return false;
}
} else {
return false;
}
}
return stack.empty();
}

public boolean match(char c1, char c2) {
return (c1 == '(' && c2 == ')') || (c1 == '[' && c2 == ']')
|| (c1 == '{' && c2 == '}');
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: