检查链表是否是一个palindrome?
什么是palindrome?
举个例子
12344321
这就是个palindrome,开头的1和结尾的1对应,第二位的2和倒数第二位的2对应
我查到一个不错的方法,大家可以参考一下,思路很好,利用了栈FIFO的性质
public static boolean isPalindrome(Node head)
{
Node slwptr=head;
Node fstptr=head;
Stack<Integer> s1=new Stack<Integer>();
while(fstptr!=null && fstptr.next!=null)
{
s1.push(slwptr.data);
slwptr=slwptr.next;
fstptr=fstptr.next.next;
}
if(fstptr!=null)
slwptr=slwptr.next;
while(slwptr!=null)
{
if(slwptr.data!=s1.pop())
return false;
slwptr = slwptr.next;
}
return true;
}
大家如果有别的好的思路,欢迎留言