有效的括号.
Posted wswpyt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有效的括号.相关的知识,希望对你有一定的参考价值。
给定一个只包括 ‘(‘
,‘)‘
,‘{‘
,‘}‘
,‘[‘
,‘]‘
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
输入: "{[]}"
输出: true
通过此题掌握栈的使用
题目分析:判断括号是否匹配(成对出现),不匹配则输出false,匹配则输出true;
此题可以用栈的知识解决:遍历字符串,将元素依次入栈,然后运用栈的push()方法主动为元素匹配,比如输入‘(’,则主动入栈‘)’,输入‘[’,则主动入栈‘]’;之后进行比较,比如刚开始将‘(’入栈,则比较字符串中‘(’之后的一个字符是不是‘)’,如果是,则输出true,不是则输出false;
当然别忘了空字符串的情况。
代码实现:
1 public boolean isValid(String s) 2 { 3 Stack<Character> stack = new Stack<>(); 4 5 for(Character c : s.toCharArray()) 6 { 7 if (c == ‘(‘) 8 stack.push(‘)‘); 9 else if (c == ‘[‘) 10 stack.push(‘]‘); 11 else if (c == ‘{‘) 12 stack.push(‘}‘); 13 else if (stack.isEmpty() || stack.pop() != c) 14 return false; 15 } 16 17 return stack.isEmpty(); 18 19 }
主函数:
1 public static void main(String[] args) 2 { 3 T3 t = new T3(); 4 System.out.println(t.isValid("()")); 5 System.out.println(t.isValid("()[]")); 6 System.out.println(t.isValid(")(")); 7 System.out.println(t.isValid("(){][]")); 8 }
运行结果:
1 true
2 true
3 false
4 false
以上是关于有效的括号.的主要内容,如果未能解决你的问题,请参考以下文章
需要一种有效的方法来避免使用 Laravel 5 重复代码片段