java输出的括号_算法学习:有效的括号(Java)

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1:

输入: “()”

输出: true

示例 2:

输入: “()[]{}”

输出: true

示例 3:

输入: “(]”

输出: false

示例 4:

输入: “([)]”

输出: false

示例 5:

输入: “{[]}”

输出: true

思路:采用栈结构,遍历字符串,若为’[’,’(’,’{‘则入栈。若为’]’,’)’,’}’,且此时为空栈,则返回false,否则取栈顶元素进行比较,若为对应的’[’,’(’,’{’,则出栈,否则返回false。遍历结束后若栈不为空则返回false。

class Solution {

public boolean isValid(String s) {

Stack stack = new Stack();

for (int i = 0; i < s.length(); i++) {

switch (s.charAt(i)) {

case '(':

case '[':

case '{':

stack.push(s.charAt(i));

break;

case ')':

if(stack.empty()) {return false;}//判断栈顶是否有元素

if (stack.peek().toString().charAt(0) == '(') {//若前一个元素刚好匹配则出栈

stack.pop();

break;

}

//若前一个括号不匹配则返回false

return false;

case ']':

if(stack.empty()) {return false;}

if (stack.peek().toString().charAt(0) == '[') {

stack.pop();

break;

}

return false;

case '}':

if(stack.empty()) {return false;}

if (stack.peek().toString().charAt(0) == '{') {

stack.pop();break;

}

return false;

}

}

return stack.empty();

}

}

标签:case,return,charAt,示例,括号,算法,Java,false,stack

来源: https://blog.csdn.net/MistyWood/article/details/99460835


版权声明:本文为weixin_42458021原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。