スタックシーケンスを所与のものとして判断すると、シーケンスが適法であるかどうかを判断する(Exercise 1_3_45,java)。

3470 ワード

package chapterone;

import java.util.Scanner;
import java.util.Stack;

/*** * @author luodijack * * thinking:       ,             ,             。 * 1)       ,       ,             ; * 2)                       ,          ,        。 * 3)                      ,        ,           ; * 4)        ,                  ,   2        。 */
public class Exercise1_3_45 {
    private static boolean judgeIsMatched(String a, String b) {
        boolean flag = true;
        Stack assistantStack = new Stack();
        char[] inOrder = a.toCharArray();
        char[] outOrder = b.toCharArray();
        int index = 0;

        for (int i = 0; i < inOrder.length; i++) {
            while (!assistantStack.isEmpty()
                    && assistantStack.peek().equals(
                            String.valueOf(outOrder[index]))) {
                index++;
                assistantStack.pop();
            }
            assistantStack.push(String.valueOf(inOrder[i]));
        }

        while (!assistantStack.isEmpty()
                && assistantStack.peek()
                        .equals(String.valueOf(outOrder[index]))) {
            index++;
            assistantStack.pop();
        }

        if (!assistantStack.isEmpty()) {
            flag = false;
        }
        return flag;
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String a, b;
        System.out.println("please input the inOrder string");
        a = scan.next();
        while (true) {
            System.out.println("please input the string that need to match");
            b = scan.next();
            // scan.close();
            if (judgeIsMatched(a, b) == true) {
                System.out.println("Matched!");
            } else {
                System.out.println("Not Matched!");
            }
        }
    }
}
参考:http://blog.csdn.net/lisongjia123/article/details/49706363