标签:class 顺序 nbsp als 分析 stat sem array 输出
给定一个只包括 ‘(‘
,‘)‘
,‘{‘
,‘}‘
,‘[‘
,‘]‘
的字符串,判断字符串是否有效。
有效字符串需满足:
注意空字符串可被认为是有效字符串。
示例 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
标签:class 顺序 nbsp als 分析 stat sem array 输出
原文地址:https://www.cnblogs.com/WSWPYT/p/9691643.html