有效括号-栈
1、栈,LIFO-后进先出数据结构。
/**
* 给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。
* 有效字符串需满足:
* 左括号必须用相同类型的右括号闭合。
* 左括号必须以正确的顺序闭合。
*
* 示例 1:
* 输入:s = "()"
* 输出:true
*
* 输入:s = "(]"
* 输出:false
*
* 提示:
* 1 <= s.length <= 104
* s 仅由括号 '()[]{}' 组成
*/
public static boolean isValid(String s) {
if (s == null || s.equals("")) {
return false;
}
char[] sign = s.toCharArray();
Stack<Character> stack = new Stack<>();
for (char item : sign) {
switch (item) {
case ')':
if (!stack.empty() && '(' == stack.peek()) { //peek() 只返回栈顶元素,不删除
stack.pop(); //pop() 返回栈顶元素,并删除
} else {
return false;
}
break;
case ']':
if (!stack.empty() && '[' == stack.peek()) {
stack.pop();
} else {
return false;
}
break;
case '}':
if (!stack.empty() && '{' == stack.peek()) {
stack.pop();
} else {
return false;
}
break;
default:
stack.push(item); //往栈顶放元素
break;
}
}
if (stack.size() > 0) {
return false;
}
return true;
}
缘于生活,而归于工作。本人所书,而意于分享。
如有转载,请注明出处!
--活出自己范儿

浙公网安备 33010602011771号