杭电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 }

 

posted @ 2014-07-13 22:39  soul390  阅读(151)  评论(0)    收藏  举报