Java while循环是如何迭代的?

Java while循环是如何迭代的?,java,for-loop,while-loop,stack,queue,Java,For Loop,While Loop,Stack,Queue,这是while循环的正确逻辑吗: 1.如果堆栈不是空的,请执行。。。 2.检查堆栈顶部的元素==队列底部的元素 这将一直持续到堆栈/队列首先完成(如果是回文,则它们同时完成)为止?我认为对于if(s.pop()…),我必须使用for循环进行迭代 干杯 for (int i = 0; i < word.length(); i++) { letter = word.charAt(i); s.push(i); q.add(i); } while (!s.isEm

这是while循环的正确逻辑吗: 1.如果堆栈不是空的,请执行。。。 2.检查堆栈顶部的元素==队列底部的元素

这将一直持续到堆栈/队列首先完成(如果是回文,则它们同时完成)为止?我认为对于if(s.pop()…),我必须使用for循环进行迭代

干杯

for (int i = 0; i < word.length(); i++) {
    letter = word.charAt(i);
    s.push(i);
    q.add(i);
  }

  while (!s.isEmpty()) {
    if (s.pop()) != q.remove()) {
      return false;
    }
  }
for(int i=0;i
若要检查单词是否为回文,请将所有字符推到堆栈中,然后将其弹出到另一个字符串中。后者将与前者相反。所以只需检查这两个字符串是否相同

这是正确的代码,是的,您的逻辑是写的,但是它占用了太多的空间,您可以在堆栈的帮助下完成它,但不需要队列

import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

class Test{
    public static void main(String[] args) {
        String word = "diid";
        Stack<Character> s = new Stack<>();
        Queue<Character> q = new LinkedList<>();
        for (int i = 0; i < word.length(); i++) {
            char letter = word.charAt(i);
            s.push(letter);
            q.add(letter);
          }

          while (!s.isEmpty()) {
            if (s.pop() != q.remove()) {
              System.out.println("Not Palindrome");
              return;
            }
          }
          System.out.println("Palindrome");
    }
}
import java.util.LinkedList;
导入java.util.Queue;
导入java.util.Stack;
课堂测试{
公共静态void main(字符串[]args){
字符串word=“diid”;
堆栈s=新堆栈();
队列q=新的LinkedList();
for(int i=0;i
如果
s
是您的堆栈。。。什么是
q
?首先解释一下你想做什么。你可能想在
推送
添加
调用中使用
字母
(而不是
i
)。另外,
返回新的StringBuilder(word).reverse().toString().equals(word)更具可读性。