链表回文串判断 老酒装新壶 双指针加链表反转(代码好记易写)
解题思路
使用双指针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;}}
}
链表回文串判断 老酒装新壶 双指针加链表反转(代码好记易写)相关推荐
- 回文串判断(string类:反转reverse)
2029-Palindromes _easy version Problem Description "回文串"是一个正读和反读都一样的字符串,比如"level" ...
- 《LeetBook》leetcode题解(5):Longest Palindromic [M]——回文串判断
我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...
- 判断字符串是否为回文串
判断字符串是否为回文串 判断回文数(双指针法) 常规解法 public boolean IsPalindrome1(String A){char[] arrayA = A.toCharArray(); ...
- AK F.*ing leetcode 流浪计划之回文串
欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击. 文章目录 一.简介 二.解题步骤 三.作用 四.经典算法介绍 判断一个串是否为回文串(单次查询) 普通情况 判断指定字符 多次子 ...
- lintcode-415-有效回文串
415-有效回文串 给定一个字符串,判断其是否为一个回文串.只包含字母和数字,忽略大小写. 注意事项 你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题. 在这个题目中,我们将 ...
- hnu 暑期实训之回文串
文章目录 题目 思路 AC代码 题目 思路 回文串首先可以对所给的字符串判断一下看看是不是回文串,如果是就直接输出0:对于不是回文串的,我们先来观察一段回文串 "abcba" 对于 ...
- Java 验证回文串
题目: 编写程序,验证一个字符串是否为回文串:是否从前读它和从后读它都是一样的.例如,mom,dad是回文串.该程序接收用户输入的字符串,判断是否为回文串,然后将判断的结果输出.在验证回文串时,忽略大 ...
- 2020秋招——XX校招笔试编程题:回文串
回文串判断&打印给定字符串中的所有回文串 笔试时是纸质的,记错了indexOf()函数和charAt()函数,重大失误emmm,这样逻辑虽然都对了还是要gg,ww,反省中... 回文串:aba ...
- [nowcoder]优美的回文串
题面 链接:https://www.nowcoder.com/questionTerminal/cf00949583604f8c9f3315fd64236a8c?orderByHotValue=1 来 ...
最新文章
- 面试官:我把数据库部署在Docker容器内,你觉得如何?
- 收藏 | 精选11篇AI领域论文(附代码、数据集链接)
- c#json对象转数组_数组和对象的区别
- mysql 排序后 下一条记录_什么是MySQL InnoDB 二级索引的排序?|附实例详解
- 研发中会使用到的工具
- 《iOS 9 开发指南》——第6章,第6.7节iOS 9控件的属性
- DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016,表挂起
- 深度解析 | 用 AI 帮助听障人群,一共需要几步?
- 模块电源(二):电感式DC-DC升压器
- 一篇文章掌握MySQL事务的四大特性
- 解决错误---undefined reference to `pthread_create‘
- Javascript常用函数、方法速查手册
- 汽车租赁管理系统的设计与实现(JSP+SqlServer在线租车网站)
- csdn博客修改名字,不需要重新注册的。
- AxGlyph矢量绘图软件
- linux内核态访问串口,linux内核中串口驱动注册过程(tty驱动)[转]
- oCPC和CPC之间的区别
- TLS Client-initiated 重协商攻击(CVE-2011-1473)漏洞验证测试
- python中的阶乘,python中阶乘怎么表示
- [DFS][打表]染色的立方体
热门文章
- 万字报告丨元宇宙的价值究竟在哪,有哪些方向值得重点关注?
- OSD(On Screen Display )技术(转)
- 解决OSError: /root/anaconda3/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.20‘ not found问题
- 瑞芯微开发板资料收集
- 基于FMC的Kintex XCKU060高性能PCIe载板 XCKU060板卡 AD采集板卡
- BZOJ2560 串珠子
- 代理加盟小程序挖掘万亿商业市场价值
- halcon给图像添加不同颜色的透明遮罩(叠加透明ROI)
- 双核服务器和双路服务器三大区别
- VMware8虚拟机安装东皇Mac OSX 10.6.5