快慢指针解决回文问题

数组或字符串方法求解

class Solution {
public:bool isPalindrome(ListNode* head) {vector<int>num;while(head){num.push_back(head->val);head = head->next;}int k = (num.size()+1)/2,len = num.size();for(int i=0;i<k;i++)if(num[i] != num[len-i-1])return false;return true;}
};
class Solution {
public:bool isPalindrome(ListNode* head) {string s="";while(head){s += head->val;head = head->next;}int k = s.length();for(int i=0;i<(k+1)/2;i++)if(s[i] != s[k-i-1])return false;return true;}
};

快慢指针

快慢指针中的快慢是指移动的步长,及每次向前移速度的快慢。例如:快指针每次沿链表向前移动2,慢指针每次向前移动1。

算法过程
  1. 找到中间结点并翻转前半部分
  2. 奇数节点特殊处理
  3. 判断是否回文
  4. 返回结果
class Solution {
public:bool isPalindrome(ListNode* head) {ListNode *fast=head,*slow=head;ListNode *p,*pre=NULL;//用于翻转前半部分while(fast && fast->next){p=slow;slow=slow->next;fast=fast->next->next;p->next=pre;    //先移动再断连接翻转,若先翻转再移动,slow、fast将找不到nextpre=p;        }if(fast)slow=slow->next;//奇数个节点while(pre && slow){if(pre->val != slow->val)return false;pre=pre->next;slow=slow->next;}return true;}
};

快慢指针解决回文问题相关推荐

  1. Python列表巧妙解决回文数判断问题

    题目: 编程:输入一个5位数字,判断这个数字是不是回文数. 运行后若输入:12345 则结果输出:不是回文数 运行后若输入:12321 则结果输出:是回文数 运行后若输入:1321 则结果输出:输入有 ...

  2. 数据结构——用栈解决回文字符问题

    回文 回文是指正读反读均相同的字符序列,如"abba"和"abdba"均是回文,但"good"不是回文.试写一个算法判定给定的字符序列是否为 ...

  3. c语言 指针 字符串 回文 strcmp,【查找字符串面试题】面试问题:C语言指针题集… - 看准网...

    1. 若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是(). A. p=q;           B. *p=*q;        C. a=*q;         ...

  4. 疯子的算法总结(七) 字符串算法之 manacher 算法 O(N)解决回文串

    有点像DP的思想,写写就会做. #include<bits/stdc++.h> using namespace std; const int maxn=1e7+5; char a[maxn ...

  5. python 回文链表

    | 回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表.如果是,返回 true :否则,返回 false . 输入:head = [1,2,2,1] 输出:true 输入:he ...

  6. 算法学习:回文自动机

    [定义] [自动机] 参照AC自动机 [前置知识] [AC自动机] [manacher] 其实不学这两个也可以,但是学过之后会更方便理解 [解决问题] 主要解决回文串的问题 能求出   字符串中回文子 ...

  7. 回文串问题的克星——Palindrome Tree(回文树)/Palindrome Automaton(回文自动机)学习小记

    前言 最近B组有一道我不会的题,赶紧学习. 简介 我们知道,Manacher算法可以在 O(n) O ( n ) O(n)的时间内求出以每个位置为中心的最长回文串(虽然我昨天还不知道Manacher算 ...

  8. 数据结构之回文专题(Palindrome)

    今日整理数据结构时正好遇到了回文专题,接下来我们会选典型的回文数.回文单链表.回文子串进行探讨,编程语言随机为C或者java.首先我们来看回文数,如何判断一个整数位回文数呢?小白我的理解应该是:121 ...

  9. 数据结构与算法快慢指针

    本次分享利用快慢指针解决环形链表 有这样一个面试题 判断单链表是否存在环 题目描述:输入一个单向链表,判断链表是否有环. 分析:通过两个指针,分别从链表的头节点出发,一个每次向后移动一步,另一个移动两 ...

  10. 回文树介绍(Palindromic Tree)

    简介 回文树是由Mikhail Rubinchik大神发明的,在Petrozavodsk Summer Camp 2014上首次提出来,是一个很新的数据结构,目前相关资料比较少. 顾名思义,回文树是一 ...

最新文章

  1. 「前端组件化」该怎么理解?
  2. shell 提示符个性化设置
  3. findwindowex子窗口类型有哪几种_游戏场景该怎么画?来参考一下不同的类型吧
  4. 交错数组(jagged array)
  5. Oracle下载安装:
  6. 360Hbase二级索引
  7. Autoware安装使用教程
  8. Windows server 2008 如何下载镜像及其安装到VM内的步骤
  9. 解决 error: Raw kernel process exited code: 3221226505
  10. iOS之安装包优化以及瘦身
  11. 支付入门-易宝支付实践
  12. 睡眠不好怎么办?提升睡眠质量的小妙招
  13. php算法----队列
  14. MySQL 数据操作 DML细节
  15. PhoneApplicationFrame以及设置Obscured/Unobscured的event handler
  16. 套汇算法c语言,在金字塔下实现套利策略的测评
  17. 有些视频不显示IDM的下载按钮
  18. MyBatis执行简单的CRUD
  19. studio和solo哪个好_使用点评曝光beats studio3和solo pro有何区别?哪个好?图文评测详情如何...
  20. flex布局水平居中

热门文章

  1. 菏泽职业学院计算机专业代码,菏泽家政职业学院代码及专业代码
  2. 华为路由器的静态路由之间的等价路由以及浮动路由
  3. 快速合并所有txt文档
  4. 应急响应病毒分析查杀集合
  5. 服务器pe系统ghost系统安装教程,科技教程:U盘PE启动安装GHOST系统图文教程
  6. 联想主板9针开关接线图_家庭配电箱总漏电保护,空气开关用63A还是40A好?看完彻底懂了...
  7. 微信小程序蓝牙通讯、串口通讯、调试助手(HC-08等 )
  8. Android全局设置APP为黑白模式的两种方案
  9. java进制转换所有方法_Java进制转换方法整理
  10. SPSS Modeler 和spss statistics有什么不同