OJ——华为编程题目:输入字符串括号是否匹配

时间:2023-03-08 16:14:53
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