检查链表是否是回文

问题描述 投票:0回答:1
public boolean palindromLinkedList() {
    //find size
    Node temp = head;
    int size=0;
    while(temp != null){
        size++;
        temp=temp.next;
    }
    //find while loop iteration
    int c;
    if(size%2 ==0){
        c = size/2;
    }else{
        c = (size+1)/2;
    }
    //intialise start and end pointer
    Node start = head;
    Node end = tail;
    //index pointer
    int k =size-1;
    //loop for the palindrome condition
    while(c > 0)`
        if(start.data != end.data){
            return false;
        }
        start = start.next;
        Node find = head;
        k--;
        for(int i=0;i<=k;i++){
            find = find.next;
        }
        end = find;
        c--;
    }
    return true;
}

我尝试使用类似于两个指针的方法来检查链表是否是回溯链表,我初始化了两个变量,其中一个变量为start = head和end = tail。start从start开始检查节点,end从tail开始检查,在检查数据后start 和 end 值相等我做了更改,使 start 指向 nextnode 并使用 for 循环查找 end 的前一个节点,这个过程一直持续到指针到达中间节点,如果链表是回文它返回 true 或否则错误。我认为我的方法是正确的,但似乎有一些我错过了

java linked-list palindrome
1个回答
0
投票

看来你实现了自己的链表,使得这个问题很难回答。

但是,假设您的代码类似于 java.util.LinkedList:

java中的

==
检查引用,而不是给定的对象。您应该使用
.equals
来比较节点数据。 更好的是
Objects.equals(start.data, end.data)
,因为它还可以处理
null

© www.soinside.com 2019 - 2024. All rights reserved.