不会题目的思路总结
01 对称匹配问题(总元素必为偶数个)
思想:
- 当读取遇到左边部分(对称轴左边),就把相应的右边部分内容压栈进去,
- 当读取遇到右边部分,则进行弹栈进行相等比较处理(与右边部分内容)
- 当读取完时所有元素时,栈中无元素时,则代表所求的东西是对称的符合匹配规律的,
- 若中途栈为空或者弹栈比较的结果为false,那么东西必然是不符合对称的
注意:以"[]"(对称图形),则左边部分内容(对称轴左边)为"[",右边部分内容(对称轴右边)为"]"
实例:b站基础面试题-----括号匹配问题(对称的)
public class Solution01 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入要判断的字符串"); System.out.println(isPairs(scanner.next())); } //利用栈先进后出的原理,括号匹配也是后面进去的先匹配) public static boolean isPairs(String string) { if (string.length() % 2 != 0) { //奇数必然不匹配 return false; } //利用栈先进后出的原理,每遇到左括号,就压进去(push)对应的右括号,然后遇到右括号就进行弹栈 // 若所有的弹栈都和对应的右括号的一致,就返回true,否则返回false Stack<Character> stack = new Stack();//定义一个栈,利用泛型限定压栈的内容 char[] chars = string.toCharArray();//为压栈做准备 for (int i = 0; i < chars.length; i++) { if (chars[i] == '{') { stack.push('}'); } else if (chars[i] == '[') { stack.push(']'); } else if (chars[i] == '(') stack.push(')'); else if (stack.isEmpty() || chars[i] != stack.pop()) { //栈空该次代表着遇到的就是结束符号 //如果弹出的栈与遇到的右括号不相等,也是返回false; return false; } } //如果遍历完所有的字符数字元素,都未返回false,那么栈必然为空 return stack.isEmpty(); }原文转载:http://www.shaoqun.com/a/497282.html
moss:https://www.ikjzd.com/w/1653
3suisses:https://www.ikjzd.com/w/412
acedota:https://www.ikjzd.com/w/2070
不会题目的思路总结01对称匹配问题(总元素必为偶数个)思想:当读取遇到左边部分(对称轴左边),就把相应的右边部分内容压栈进去,当读取遇到右边部分,则进行弹栈进行相等比较处理(与右边部分内容)当读取完时所有元素时,栈中无元素时,则代表所求的东西是对称的符合匹配规律的,若中途栈为空或者弹栈比较的结果为false,那么东西必然是不符合对称的注意:以"[]"(对称图形),则左边部分内容
google correlate:google correlate
net-a-porter:net-a-porter
深圳市南山到惠东开车路线?深圳到南山漂流自助游攻略?:深圳市南山到惠东开车路线?深圳到南山漂流自助游攻略?
去越南旅游怎样兑换越南盾最划算?:去越南旅游怎样兑换越南盾最划算?
特朗普扬言:将对从中国进口的苹果产品加征10%关税!:特朗普扬言:将对从中国进口的苹果产品加征10%关税!
No comments:
Post a Comment