-1
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();
当你分配时会发生什么,this .i 与这一行混淆了,任何人都可以解释一下吗?

4

1 回答 1

0

它只是删除堆栈的最顶部字符,并reverseInput使用 Java 常用的字符串连接将其附加到字符串。因为它在那个循环内,所以它会删除字符,直到堆栈为空。这就是实际反转输入字符串的原因(原始字符串的第一个字符是堆栈中的最底部,因此它是反转字符串的最后一个字符)。

请参阅此处的 java.util.Stack JavaDoc。

于 2013-11-09T12:58:22.860 回答