解题思路

使用双指针slow,fast对链表进行遍历,当fast走到最后(链表长度为偶数slow为中间两个右边的,长度为奇数为链表的中间元素),slow走到中间(链表长度为偶数slow为中间两个右边的,长度为奇数为链表的中间元素,无论两种情况那种情况第一段链表开始比较的开头都在slow的前一个),反转前一段链表前需要把链表断开,反转,比较,反转恢复,接回去。

代码

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public boolean isPalindrome(ListNode head) {//特判 if(head == null || head.next == null){return true;}ListNode midPre = null;//初始化快慢指针ListNode fast = head ,  slow = head;while(fast != null && fast.next != null){midPre = slow;slow = slow.next;fast = fast.next.next;}//断开链表midPre.next = null;//反转前段链表reverse(head);//根据链表长度奇偶确定后半段链表开始比较的位置ListNode head2 = null;if(fast != null){head2 = slow.next;}else{head2 = slow;}ListNode head3 = midPre;//回文判断while(head3 != null && head2 != null){if(head2.val != head3.val){return false;}head2 = head2.next;head3 = head3.next;}//反转回来reverse(midPre);//接上链表midPre.next = slow;return true;}public void reverse(ListNode head){ListNode pre = null;ListNode cur = head;ListNode next = null;while(cur != null){next = cur.next;cur.next = pre;pre = cur;cur = next;}}
}

链表回文串判断 老酒装新壶 双指针加链表反转(代码好记易写)相关推荐

  1. 回文串判断(string类:反转reverse)

    2029-Palindromes _easy version Problem Description "回文串"是一个正读和反读都一样的字符串,比如"level" ...

  2. 《LeetBook》leetcode题解(5):Longest Palindromic [M]——回文串判断

    我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...

  3. 判断字符串是否为回文串

    判断字符串是否为回文串 判断回文数(双指针法) 常规解法 public boolean IsPalindrome1(String A){char[] arrayA = A.toCharArray(); ...

  4. AK F.*ing leetcode 流浪计划之回文串

    欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击. 文章目录 一.简介 二.解题步骤 三.作用 四.经典算法介绍 判断一个串是否为回文串(单次查询) 普通情况 判断指定字符 多次子 ...

  5. lintcode-415-有效回文串

    415-有效回文串 给定一个字符串,判断其是否为一个回文串.只包含字母和数字,忽略大小写. 注意事项 你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题. 在这个题目中,我们将 ...

  6. hnu 暑期实训之回文串

    文章目录 题目 思路 AC代码 题目 思路 回文串首先可以对所给的字符串判断一下看看是不是回文串,如果是就直接输出0:对于不是回文串的,我们先来观察一段回文串 "abcba" 对于 ...

  7. Java 验证回文串

    题目: 编写程序,验证一个字符串是否为回文串:是否从前读它和从后读它都是一样的.例如,mom,dad是回文串.该程序接收用户输入的字符串,判断是否为回文串,然后将判断的结果输出.在验证回文串时,忽略大 ...

  8. 2020秋招——XX校招笔试编程题:回文串

    回文串判断&打印给定字符串中的所有回文串 笔试时是纸质的,记错了indexOf()函数和charAt()函数,重大失误emmm,这样逻辑虽然都对了还是要gg,ww,反省中... 回文串:aba ...

  9. [nowcoder]优美的回文串

    题面 链接:https://www.nowcoder.com/questionTerminal/cf00949583604f8c9f3315fd64236a8c?orderByHotValue=1 来 ...

最新文章

  1. 面试官:我把数据库部署在Docker容器内,你觉得如何?
  2. 收藏 | 精选11篇AI领域论文(附代码、数据集链接)
  3. c#json对象转数组_数组和对象的区别
  4. mysql 排序后 下一条记录_什么是MySQL InnoDB 二级索引的排序?|附实例详解
  5. 研发中会使用到的工具
  6. 《iOS 9 开发指南》——第6章,第6.7节iOS 9控件的属性
  7. DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016,表挂起
  8. 深度解析 | 用 AI 帮助听障人群,一共需要几步?
  9. 模块电源(二):电感式DC-DC升压器
  10. 一篇文章掌握MySQL事务的四大特性
  11. 解决错误---undefined reference to `pthread_create‘
  12. Javascript常用函数、方法速查手册
  13. 汽车租赁管理系统的设计与实现(JSP+SqlServer在线租车网站)
  14. csdn博客修改名字,不需要重新注册的。
  15. AxGlyph矢量绘图软件
  16. linux内核态访问串口,linux内核中串口驱动注册过程(tty驱动)[转]
  17. oCPC和CPC之间的区别
  18. TLS Client-initiated 重协商攻击(CVE-2011-1473)漏洞验证测试
  19. python中的阶乘,python中阶乘怎么表示
  20. [DFS][打表]染色的立方体

热门文章

  1. 万字报告丨元宇宙的价值究竟在哪,有哪些方向值得重点关注?
  2. OSD(On Screen Display )技术(转)
  3. 解决OSError: /root/anaconda3/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.20‘ not found问题
  4. 瑞芯微开发板资料收集
  5. 基于FMC的Kintex XCKU060高性能PCIe载板 XCKU060板卡 AD采集板卡
  6. BZOJ2560 串珠子
  7. 代理加盟小程序挖掘万亿商业市场价值
  8. halcon给图像添加不同颜色的透明遮罩(叠加透明ROI)
  9. 双核服务器和双路服务器三大区别
  10. VMware8虚拟机安装东皇Mac OSX 10.6.5