OJ——华为编程题目:输入字符串括号是否匹配
package t0815; /* * 华为编程题目:输入字符串括号是否匹配 * 若都匹配输出为0,否则为1 * 样例输入:Terminal user [name | number (1)] * 样例输出:0 * Java版本 */ /* * 个人总结: * (1)语法上Java的输入Scanner使用 * (2)char[] arr=mxf.toCharArray()的使用,将输入的字符串转成字符数组;这样就可以一个 * 一个的遍历 * (3)算法上,这里使用了经典的入栈和出栈的思想 * */ import java.util.Scanner; import java.util.Vector; public class huawei_StringMatching { public static void main(String[] args){ System.out.println("请按照规格输入字符串"); Scanner ScStr=new Scanner(System.in); String sqy = ScStr.nextLine(); System.out.print(Check(sqy)); } public static int Check(String mxf){ int count=0; int flag=1; char[] arr=mxf.toCharArray(); Vector<Character> vec=new Vector<Character>(); for(int j=0;j<arr.length;j++){ if(arr[j]=='(') {vec.add(arr[j]);count++;} //入栈,并且计数加1 if(arr[j]=='[') {vec.add(arr[j]);count++;}//入栈,并且计数加1 if(arr[j]==']'){ if(vec.elementAt(count-1)=='[') {vec.remove(count-1);count--;}//出栈,并且计数减1 } if(arr[j]==')'){ if(vec.elementAt(count-1)=='(') {vec.remove(count-1);count--;}////出栈,并且计数减1 } } if(vec.isEmpty()) flag=0; // 如果为空,说明可以正确匹配 return flag; } }
结果:
请按照规格输入字符串
Terminal user [name | number (1)]
0
每天都做更好的自己,不纠结于输赢成败