NYOJ 2–括弧配對問題

來源:互聯網
上載者:User
括弧配對問題時間限制:3000 ms  |  記憶體限制:65535 KB難度:3
描述
現在,有一行括弧序列,請你檢查這行括弧是否配對。

輸入
第一行輸入一個數N(0<N<=100),表示有N組測試資料。後面的N行輸入多組輸入資料,每組輸入資料都是一個字串S(S的長度小於10000,且S不是空串),測試資料群組數少於5組。資料保證S中只含有"[","]","(",")"四種字元
輸出
每組輸入資料的輸出佔一行,如果該字串中所含的括弧是配對的,則輸出Yes,如果不配對則輸出No
範例輸入
3[(])(])([[]()])
範例輸出
NoNoYes

C++版:

#include<cstdio>#include<cstring>using namespace std;struct stack{char a[10001];int top;}b;char d[10001];void push(char c){b.a[b.top]=c;b.top++;}void pop(char c){b.top--;}int main(){int n;scanf("%d",&n);//cin>>n;while(n--){scanf("%s",d);//cin>>d;b.top=0;push(d[0]);for(int i=1; i<strlen(d); i++){if(d[i]==')'&&b.a[b.top-1]=='(' || d[i]=='}'&&b.a[b.top-1]=='{' || d[i]==']'&&b.a[b.top-1]=='[' ){pop(d[i]);}else{push(d[i]);}}if(b.top==0){printf("Yes\n");//cout<<"Yes"<<endl;}else{printf("No\n");//cout<<"No"<<endl;}}return 0;}

java版:

 

 import java.util.Scanner;public class Main {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubScanner input = new Scanner(System.in);int num = input.nextInt();int i=0; String arr[] = new String[num];for(i=0; i<num; i++){arr[i] = input.next();}i=0;while(i < num){String flaot = "No";int b = to_make(arr[i]);if(b == 1){flaot = "Yes";}System.out.println(flaot);i++;}}public static int to_make(String s){int slen = s.length();if(slen%2 != 0 && slen > 1) return 0;if(s.charAt(0) == ')'||s.charAt(0) == '}'||s.charAt(0) == ']') return 0;char []ch = new char [slen/2];int j=0; char CA = '-';for(int i=0; i<slen; i++){char ca = s.charAt(i);if(ca == '('||ca == '{'||ca == '['){ch[j] = ca;}else{if(j<=0) return 0;if(ca == ')'){CA = '(';}else if(ca == '}'){CA = '{';}else if(ca == ']'){CA = '[';}if(ch[j-1] != CA) return 0;else{j -= 2;}}j++;}if(j != 0) {return 0;}return 1;}}        

 

java的棧運用:

 

 

import java.util.Scanner;import java.util.Stack;public class kuohao {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n= sc.nextInt();//3條測試資料資料Stack<Character> stack = null;while(n!=0){//從控制台讀入一個測試字串[]() [(])String str = sc.next();//如果該輸入字串為奇數,說明不匹配if(str.length() % 2 == 1){System.out.println("No");}else{//說明字元是偶數stack = new Stack<Character>();//遍曆第一條測試字串[]() [(])for(int i=0;i<str.length();i++){if(stack.isEmpty()){//如果棧是空的stack.push(str.charAt(i));}else if(stack.peek() == '[' && str.charAt(i) == ']' || stack.peek() == '(' && str.charAt(i) == ')'){//說明此時棧中字元不是空的,並且符合,stack.pop();}else{stack.push(str.charAt(i));}}if(stack.isEmpty()){//如果棧是空的,說明括弧匹配System.out.println("Yes");}else{//說明棧不為空白,括弧不匹配System.out.println("No");}}n--;}}}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.