回文链表

题目来源:

牛客网--程序员面试金典

题目描述

请编写一个函数,检查链表是否为回文。
给定一个链表ListNode* **pHead,请返回一个bool,代表链表是否为回文。

思路

1.先用头插法,生成一个新的链表
2.然后将新生成的链表和原链表进行比对

代码

import java.util.*;

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Palindrome {
    ListNode head;
    ListNode last;
    public boolean isPalindrome(ListNode pHead) {
        // write code here
        ListNode current = pHead;
        
        current = pHead;
        while(current != null){
            insert(current.val);
            current = current.next;
        }
        current = pHead;
        while(current!=null&&head!=null){
            if(current.val != head.val){
                 return false;
                
            }else{
                current = current.next;
                head = head.next;
            }
                 
        }
        return true;
        
    }
//使用头插法的方式生成一个新的链表
     public void insert(int val){  
        ListNode node = new ListNode(val);
        if(head == null){
            head = node;
            last = node;
        }else{
            node.next = head;
            head = node;
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 设计一种方式检查一个链表是否为回文链表。再用原地反转解决一次
    鬼谷神奇阅读 390评论 0 1
  • 题目 设计一种方式检查一个链表是否为回文链表。 样例1->2->1 就是一个回文链表。 分析 链表由于其特殊的结构...
    六尺帐篷阅读 2,485评论 1 1
  • 题目:回文链表定义为链表正序和逆序输出结果一致,检验链表是否是回文链表. 解法一 可以将链表反转之后和现在的链表的...
    FlyElephant阅读 464评论 0 0
  • //leetcode中还有花样链表题,这里几个例子,冰山一角 求单链表中结点的个数----时间复杂度O(n)这是最...
    暗黑破坏球嘿哈阅读 1,533评论 0 6
  • 我最近还在思考这个问题,什么问题呢? 就是如果,在我们LPL取消了升降级,那么LSPL的冠军应该怎么办啊? 每年L...
    黄铜刀阅读 1,096评论 0 0