杭电acm1022
没有通过: WrongAnswer, 不知道哪里出错了,不过还是记下来自己写的代码
1 import java.util.ArrayList; 2 import java.util.List; 3 import java.util.Scanner; 4 import java.util.Stack; 5 6 7 public class Main { 8 9 public static void main(String[] args) { 10 Scanner input = new Scanner(System.in); 11 while(true){ 12 boolean yes_no = true; 13 String line = input.nextLine(); 14 String[] strings = line.split(" "); 15 16 char[] O1 = strings[1].toCharArray(); 17 char[] O2 = strings[2].toCharArray(); 18 19 int posO2 = 0; 20 int posO1 = 0; 21 Stack<Character> stack = new Stack<Character>(); 22 List<String> output = new ArrayList<String>(O1.length*2); 23 //在假设没有全部出栈的情况下进行判断 24 while(posO2 < O2.length){ 25 26 char ch_out = O2[posO2]; 27 //如果全部入栈,但是栈顶元素和 要出栈的元素不同,则 失败 28 if(posO1 >= O1.length && ch_out != stack.peek()) { 29 yes_no = false; 30 break; 31 } 32 //栈的顶部元素 == 出栈的元素 33 if(stack.size() != 0 && ch_out == stack.peek()){ 34 stack.pop();//出栈 35 output.add("out"); 36 posO2++; 37 } 38 else{ 39 while(posO1 < O1.length){ 40 //如果不相等,就入栈,继续循环 41 if(O1[posO1] != ch_out){ 42 stack.push(O1[posO1]); 43 output.add("in"); 44 posO1++; 45 } else { //如果相等,入栈,跳出循环 46 stack.push(O1[posO1]); 47 output.add("in"); 48 posO1++; 49 break; 50 } 51 } 52 } 53 } 54 55 if (yes_no) { 56 System.out.println("Yes."); 57 for (int i = 0; i < output.size(); i++) { 58 System.out.println(output.get(i)); 59 } 60 System.out.println("FINISH"); 61 } else { 62 System.out.println("No."); 63 System.out.println("FINISH"); 64 } 65 } 66 } 67 }

浙公网安备 33010602011771号