2013-11-09 59 views
-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();
当你分配时发生了什么,这个.i与这条线混淆,可以任何一个解释?想知道使用

回答

0

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

See java.util.Stack JavaDoc here.