1. 程式人生 > >每日演算法練習之括號配對

每日演算法練習之括號配對

package myjava;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * @author wang:
 * @version 建立時間:2016年8月30日 上午8:15:06
 * 類說明
 * 括號配對問題
描述
現在,有一行括號序列,請你檢查這行括號是否配對。
輸入
第一行輸入一個數N(0<N<=100),表示有N組測試資料。後面的N行輸入多組輸入資料,
每組輸入資料都是一個字串S(S的長度小於10000,且S不是空串),測試資料組數少於5組。
資料保證S中只含有"[","]","(",")"四種字元
輸出
每組輸入資料的輸出佔一行,如果該字串中所含的括號是配對的,則輸出Yes,如果不配對則輸出No
樣例輸入
3
[(])
(])
([[]()])
樣例輸出
No
No
Yes
 */
public class peidui {
	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner san = new Scanner(System.in);
		ArrayList<String> shuju = new ArrayList<String>();
		ArrayList<String> panduan = new ArrayList<String>();
		int count = san.nextInt();
		while(count<0||count>100){
			System.out.println("長度大於0小於100");
			count = san.nextInt();
		}
		System.out.println("請輸入"+count+"組資料");
		for(int i =1;i<=count;i++){
			String temp =san.next();
			shuju.add(temp);
			char[] chars = temp.toCharArray();
			panduan.add(panduan(chars));
 		}
		
		for(int a= 0;a<shuju.size();a++){
			System.out.println(shuju.get(a));
		}
		for(int a= 0;a<panduan.size();a++){
			System.out.println(panduan.get(a));
		}
	}
	
	public static String panduan(char[] chars){
		for(int j =0;j<chars.length;j++){
			if(j == chars.length-1){
				return "no";
			}
			if(((int)chars[j]==40&&(int)chars[j+1]==41)||
					((int)chars[j]==91&&(int)chars[j+1]==93)){
//				System.out.println((int)chars[j]);
//				System.out.println((int)chars[j+1]);
				return "yes";
			}else{
			}

		}
		return "no";
	}

}

堆疊的寫法看完再更新