スタックシーケンスを所与のものとして判断すると、シーケンスが適法であるかどうかを判断する(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