gpt4 book ai didi

java - 通过比较堆栈和队列确定回文

转载 作者:行者123 更新时间:2023-11-29 05:26:01 26 4
gpt4 key购买 nike

因此,对于我的作业,我必须编写一个程序,该程序使用 StackArrayBased.java 和 QueueArrayBased.java 的实例,并向它们发送一个字符串,并比较 dequeue() 和 pop() 方法的返回值以确定该字符串是否是一个回文。我已经编写了程序,但它没有返回正确的 boolean 值,请帮忙。

public class IsPalindrome{
public static void main(String[]args){
String str = new String("abcba");
String str2 = new String("abcde");
System.out.println(isPal(str));
System.out.println(isPal(str2));
}
public static boolean isPal(String str)
{
StackArrayBased stack = new StackArrayBased();
QueueArrayBased queue = new QueueArrayBased();

String s = new String();
for (int i = 0; i < str.length( ); i++) {
s = "" + str.charAt(i);
System.out.println(s);
queue.enqueue(s);
stack.push(s);
}
// start to compare
while (!queue.isEmpty( )) {
if (queue.dequeue( ) != stack.pop( ))
return false;
}
// finished w/ empty queue (and empty stack)
return true;
}
}

最佳答案

您要将字符串 添加到队列和堆栈中,您通常应该避免对字符串使用标准相等性检查(因为它们比较的是对象标识而不是内容)。

改变:

if (queue.dequeue( ) != stack.pop( ))

到:

if (!queue.dequeue().equals(stack.pop()))

例如,这段代码(稍作修改)可以正常工作:

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

public class Test {
public static void main(String[]args){
String str = new String("abcba");
String str2 = new String("abcde");
System.out.println(isPal(str));
System.out.println(isPal(str2));
}
public static boolean isPal(String str)
{
Stack<String> stack = new Stack<String>();
Queue<String> queue = new LinkedList<String>();

String s = new String();
for (int i = 0; i < str.length( ); i++) {
s = "" + str.charAt(i);
System.out.println(s);
queue.add(s);
stack.push(s);
}
// start to compare
while (!queue.isEmpty( )) {
if (!queue.remove().equals(stack.pop( )))
return false;
}
// finished w/ empty queue (and empty stack)
return true;
}
}

输出:

a
b
c
b
a
true
a
b
c
d
e
false

关于java - 通过比较堆栈和队列确定回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22650069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com