Java while循环是如何迭代的?
这是while循环的正确逻辑吗: 1.如果堆栈不是空的,请执行。。。 2.检查堆栈顶部的元素==队列底部的元素 这将一直持续到堆栈/队列首先完成(如果是回文,则它们同时完成)为止?我认为对于if(s.pop()…),我必须使用for循环进行迭代 干杯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
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)代码>更具可读性。