题目描述
题目链接:https://leetcode-cn.com/problems/valid-parentheses/
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。遍历完成后,查看栈中是否为空,如果不为空返回false,否则返回true.
代码
public class Solution {
public boolean isValid(String s) {
Stack<Character> st=new Stack<Character>();
if(s.length()==0||s.length()%2!=0)
return false;
int i = 0;
while (i < s.length()) {
switch (s.charAt(i)) {
case '(':
case '{':
case '[':
st.push(s.charAt(i));
break;
case ']':
case '}':
case ')':
if(st.isEmpty())
return false;
if(map(s.charAt(i))!=st.peek())
return false;
else
st.pop();
break;
default:
return false;//其他字符,直接返回false
}
i++;
}
if(!st.isEmpty())//如果栈不为空
return false;
return true;
}
public char map(char ch) {
char result = ' ';
switch (ch) {
case '}':
result = '{';
break;
case ']':
result = '[';
break;
case ')':
result = '(';
break;
default:
break;
}
return result;
}
}