括号配对问题
描述
現在,有一行括號序列,請你檢查這行括號是否配對。
輸入
第一行輸入一個數N(0<N<=100),表示有N組測試數據。后面的N行輸入多組輸入數據,每組輸入數據都是一個字符串S(S的長度小于10000,且S不是空串),測試數據組數少于5組。數據保證S中只含有"[","]","(",")"四種字符
輸出
每組輸入數據的輸出占一行,如果該字符串中所含的括號是配對的,則輸出Yes,如果不配對則輸出No
樣例輸入 3 [(]) (]) ([[]()]) 樣例輸出 No No Yes
import java.util.Scanner; import java.util.Stack;public class Main {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubScanner scan = new Scanner(System.in);int n = scan.nextInt();Stack<Character> stack;while(n != 0){String s = scan.next();if(s.length() % 2 == 1)//串長為奇數肯定不匹配System.out.println("No");else //為偶數時{stack = new Stack<Character>();for(int i = 0;i < s.length();i++){if(stack.isEmpty())stack.push(s.charAt(i));else if((stack.peek() == '[' && s.charAt(i) == ']')|| (stack.peek() == '(' && s.charAt(i) == ')'))stack.pop();elsestack.push(s.charAt(i));}if(stack.isEmpty())System.out.println("Yes");elseSystem.out.println("No");}n--;}} }
決定以后有時間就AC題,來訓練算法能力。
這是一個典型的用棧來解決字符串配對的問題
現在,有一行括號序列,請你檢查這行括號是否配對。
輸入
第一行輸入一個數N(0<N<=100),表示有N組測試數據。后面的N行輸入多組輸入數據,每組輸入數據都是一個字符串S(S的長度小于10000,且S不是空串),測試數據組數少于5組。數據保證S中只含有"[","]","(",")"四種字符
輸出
每組輸入數據的輸出占一行,如果該字符串中所含的括號是配對的,則輸出Yes,如果不配對則輸出No
樣例輸入 3 [(]) (]) ([[]()]) 樣例輸出 No No Yes
import java.util.Scanner; import java.util.Stack;public class Main {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubScanner scan = new Scanner(System.in);int n = scan.nextInt();Stack<Character> stack;while(n != 0){String s = scan.next();if(s.length() % 2 == 1)//串長為奇數肯定不匹配System.out.println("No");else //為偶數時{stack = new Stack<Character>();for(int i = 0;i < s.length();i++){if(stack.isEmpty())stack.push(s.charAt(i));else if((stack.peek() == '[' && s.charAt(i) == ']')|| (stack.peek() == '(' && s.charAt(i) == ')'))stack.pop();elsestack.push(s.charAt(i));}if(stack.isEmpty())System.out.println("Yes");elseSystem.out.println("No");}n--;}} }
決定以后有時間就AC題,來訓練算法能力。
這是一個典型的用棧來解決字符串配對的問題
總結
- 上一篇: ORACLE EBS中OAF屏蔽的错误
- 下一篇: Prism安装、MVVM基础概念及一个简