Title:Valid Parentheses 20
Difficulty:Easy
原题leetcode地址:https://leetcode.com/problems/valid-parentheses/
1. 采用栈Stack
时间复杂度:O(n),一次一层for循环,需要遍历整个字符串String。
空间复杂度:O(1),申请了一个Stack,最多存放String中的每一个char。
/**
* 采用栈Stack
* @param s
* @return
*/
public static boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
stack.push(')');
}
if (s.charAt(i) == '[') {
stack.push(']');
}
if (s.charAt(i) == '{') {
stack.push('}');
}
if (s.charAt(i) == ')') {
if (stack.empty()) {
return false;
}
else {
char c = stack.pop();
if (c != ')') {
return false;
}
}
}
if (s.charAt(i) == ']') {
if (stack.empty()) {
return false;
}
else {
char c = stack.pop();
if (c != ']') {
return false;
}
}
}
if (s.charAt(i) == '}') {
if (stack.empty()) {
return false;
}
else {
char c = stack.pop();
if (c != '}') {
return false;
}
}
}
}
if (stack.empty()) {
return true;
}
else {
return false;
}
}