首页 > 代码库 > 括号配对问题

括号配对问题

描述现在,有一行括号序列,请你检查这行括号是否配对。

 
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3[(])(])([[]()])
样例输出
NoNoYes

 1 import java.util.Scanner; 2  3 public class Main { 4     public static void main(String[] args) { 5         Scanner scanner=new Scanner(System.in); 6         int T; 7         int i; 8         int k; 9         char string[]=new char[10010];10         char result[]=new char[10010];11         12         T=scanner.nextInt();13         while(T!=0){14             T--;15             string=scanner.next().toCharArray();16             k=0;17             18             for(i=0;i<string.length;i++){19                 if(string[i]==‘[‘ || string[i]==‘(‘){  //如果是[和(,则直接放入result20                     result[k]=string[i];21                     k++;22                 }23                 24                 else if(string[i]==‘]‘){ //如果为],先判断result是否存在字符(否则会溢出),再判断result的最后一个字符是否是[25                     if(k>=1 && result[k-1]==‘[‘)26                         k--;27                     28                     else{   //不是的话直接放入result29                         result[k]=string[i];30                         k++;31                     }32                 }33                 34                 else if(string[i]==‘)‘){35                     if(k>=1 && result[k-1]==‘(‘)36                         k--;37                     38                     else {39                         result[k]=string[i];40                         k++;41                     }42                 }43             }44             45             if(k==0)  //最后判断result字符的个数就知道结果了46                 System.out.println("Yes");47             48             else49                 System.out.println("No");50         }51     }52 }

 

 

括号配对问题