【020-Valid Parentheses(括号验证)】
【LeetCode-面试算法经典-Java实现】【所有题目目录索引】
原题
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.
题目大意
给定一个只包含(‘, ‘)’, ‘{‘, ‘}’, ‘[’ 和‘]’的字符串,验证它是否是有效的。括号必须配对,并且要以正确的顺序。
解题思路
用一个栈来对输入的括号串进行处理,如果是左括号就入栈,如果是右括号就与栈顶元素看是否组成一对括号,组成就弹出,并且处理下一个输入的括号,如果不匹配就直接返回结果。
代码实现
import java.util.*;
public class Solution {
public boolean isValid(String s) {
Deque<Character> stack = new LinkedList<>();
int index = 0;
Character top;
while (index < s.length()) {
Character c = s.charAt(index);
switch (c) {
case ‘(‘:
case ‘[‘:
case ‘{‘:
stack.addFirst(c);
break;
case ‘)‘:
if (stack.isEmpty()) {
return false;
}
top = stack.getFirst();
if (top == ‘(‘) {
stack.removeFirst();
} else if (top == ‘[‘ || top == ‘{‘) {
return false;
} else {
stack.addFirst(c);
}
break;
case ‘]‘:
if (stack.isEmpty()) {
return false;
}
top = stack.getFirst();
if (top == ‘[‘) {
stack.removeFirst();
} else if (top == ‘(‘ || top == ‘{‘) {
return false;
} else {
stack.addFirst(c);
}
break;
case ‘}‘:
if (stack.isEmpty()) {
return false;
}
top = stack.getFirst();
if (top == ‘{‘) {
stack.removeFirst();
} else if (top == ‘[‘ || top == ‘(‘) {
return false;
} else {
stack.addFirst(c);
}
break;
default:
return false;
}
index++;
}
return stack.isEmpty();
}
}
评测结果
点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。
特别说明
欢迎转载,转载请注明出处【http://blog.csdn.net/derrantcm/article/details/46997247】
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-25 15:31:22