java判断字符串中的括号是否匹配,左括号“(” 和右括号“)” 的匹配
想到一种判断字符串括号是否匹配的方法,供有缘人参考。
定义一个计数器,将字符串进行遍历,遍历过程中,如果先遇到右括号,直接判定为不匹配,遇到左括号计数器加1,遇到右括号计数器减1,遍历完成如计数器结果为0,则字符串匹配,否则不匹配。
1 public class IsMatch { 2 3 public static void main(String[] args) { 4 // 定义一个计数器,初始值为0 5 int count = 0; 6 7 // 随便给一个实例作为判断目标 8 String str = "(((+))/5)()-/()"; 9 10 // 开始判断 11 for (int i = 0; i < str.length(); i++) { 12 if (count < 0) { 13 break; 14 } 15 // 临时变量,遍历的目标字符串字符 16 String temp = str.substring(i, i + 1); 17 // 左括号,计数器加1 18 if (temp.equals("(")) { 19 count++; 20 } 21 // 右括号,计数器减1 22 if (temp.equals(")")) { 23 count--; 24 } 25 26 // 打印字符串的字符 27 System.out.print(temp + " "); 28 } 29 30 // 换行 31 System.out.println(); 32 if (count == 0) { 33 // 匹配为yes 34 System.out.println("yes"); 35 } else { 36 // 不匹配为not 37 System.out.println("not"); 38 } 39 } 40 41 }
当然也可判断其他类型的字符是否匹配,比如{}、[]等等。