java有人能建议简化代码吗?
public boolean isPalindrome()
{
Stack myStack = new Stack();
for(Node current = head; current!=null; current = current.next)
{
if(!myStack.isEmpty())
{
if(myStack.peek()==current.data)
{
myStack.pop();
}else if(current.next!=null&&myStack.peek()==current.next.data)
{
continue;
}
else
{
myStack.push(current.data);
}
}else
{
myStack.push(current.data);
}
}
return myStack.isEmpty();
}
我在这里做的是使用堆栈来检查链接列表是否是回文。它可以像预期的那样工作,唯一的事情是我想消除代码重复,在这种情况下,else条件会将数据推送到堆栈上
# 1 楼答案
如果您只想删除这两个条件之间的代码重复,那么就完全删除它们
# 2 楼答案
这是一个有点经典的问题。在java中有很多方法可以解决这个问题。最简单的方法之一是:
(严格地说,这是一种重写而不是重构;然而,任何保留方法签名的重写都可以被视为重构……而且肯定更有效)
# 3 楼答案
功能的简化
# 4 楼答案
这应该提供相同的功能,不会重复。然而,有人指出,您的算法似乎不正确
# 5 楼答案
不幸的是,算法不正确。对于“abbaa”,它会报告这是一个回文,尽管它不是。在不使用长度的情况下检查回文是困难的