每日演算法練習之括號配對
阿新 • • 發佈:2018-12-31
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"; } }
堆疊的寫法看完再更新