【发布时间】:2014-03-04 09:36:40
【问题描述】:
我的项目是查看用户输入的字符串是否为回文。首先,将字符串放入链表中,然后复制到第二个链表中,在该链表中我完全反转列表以便比较它们。
链表是我自己的类以及其中的所有方法。我已经确认链表的工作原理与反向方法一样。
我遇到问题的地方是当我尝试比较列表开头的 2 时。 这是我尝试过的:
package palindromes;
import data_structures.*;
import java.util.Iterator;
public class Palindrome
{
public boolean isPalindrome(String s)
{
if (s.length() <= 1) // base case
return true;
String originalList = s.replaceAll("[\\W]", "").toLowerCase();
LinkedList<Character> list1 = new LinkedList<Character>();
LinkedList<Character> rlist = new LinkedList<Character>();
for (int i = 0; i < originalList.length(); i++)
{
list1.addLast(originalList.charAt(i));
}
rlist = list1;
rlist.reverse();
Iterator<Character> l1 = list1.iterator();
Iterator<Character> l2 = rlist.iterator();
while (l1.hasNext() && l2.hasNext())
{
if (l1.next() != l1.next())
return false;
}
return true;
}
}
我尝试在 while 循环中遍历两个列表,但是当我去测试节点的数据时它是不正确的。
如果您需要补充信息或澄清,请告诉我。
我的问题是如何修复我的代码,以便我能够按顺序比较列表以查看输入的字符串是否为回文?
【问题讨论】:
-
如果您想比较相等性,切勿将对象与
==比较 -==比较对象身份! -
您不必将
\\W放在[]中。
标签: java iterator linked-list compare equals