import java.util.Stack;
public class PalindromeTest {
public static void main(String[] args) {
String input = "test";
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < input.length(); i++) {
stack.push(input.charAt(i));
}
String reverseInput = "";
while (!stack.isEmpty()) {
reverseInput += stack.pop();
}
if (input.equals(reverseInput))
System.out.println("Yo! that is a palindrome.");
else
System.out.println("No! that isn't a palindrome.");
}
}
在上述计划中,目的是什么:
reverseInput + = stack.pop();
分配时会发生什么,这个.i与此行混淆,可以解释任何一个吗?
答案 0 :(得分:0)
它只是删除堆栈的最顶层字符,并使用Java通常的字符串连接将其附加到字符串reverseInput
。因为它在该循环内部,所以它将删除字符,直到堆栈为空。这实际上是反转输入字符串(原始的第一个字符是堆栈中最底层的字符,因此它是反转字符串的最后一个字符)。