iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python判断回文链表的方法是什么
  • 855
分享到

Python判断回文链表的方法是什么

2023-06-26 06:06:59 855人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

小编今天带大家了解python判断回文链表的方法是什么,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“Python判断回文链表的方法是

小编今天带大家了解python判断回文链表的方法是什么,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习Python判断回文链表的方法是什么”的知识吧。

什么是回文数?

回文数简单的说就是正着倒着读都是一样的,比如:12321,1221,1111等等,正着读也是12321,倒着读也是12321。

首先,接收用户输入数字列表转换成链表

比如用户输入:1 2 3 2 1,转换为链表后,如下图

Python判断回文链表的方法是什么

首先接收用户输入数字列表,每个数字用空格分隔,使用split截断字符串,使用map,把每个元素映射成int类型,然后再转成list,使用循环取出每项元素添加到链表中。

lt = list(map(int, s.split(' ')))

代码如下:

# 链表类class Listnode:    def __init__(self, x):        self.val = x        self.next = None # 字符串转换为链表def list_node(s):    lt = list(map(int, s.split(' ')))    l = ListNode(0)  # 创建头节点为0的链表    p = l    for i in range(len(lt)):        p.next = ListNode(lt[i])        p = p.next    return l.next

判断是否是回文

找中间位置处使用快慢指针法,慢指针一次跳一格,快指针一次跳2格,所以快指针是慢指针的2倍,当快指针为None时,说明链表结束了,也就是代码中的fast.next.next=None时,链表结束,此时慢指针刚好指着链表的中间位置,所以就得到3是中间位置,从3的下一个位置。再将中间位置的下一个节点开始的链表,进行倒叙,也就是21,倒叙后为12。

Python判断回文链表的方法是什么

 再与中间位置前面一段链表进行比较是否相等,如果p==None时说明链表为None,直接返回True,p==None,q也一定为None(具体看后面的倒叙方法)

while p is not None and q is not None:        if p.val is not q.val:            return False        q, p = q.next, p.next

完整代码:

# 是否是回文def palindrome(l):    if l is None:        return True    slow = fast = l    # 查找中间节点,一快一慢指针,快的是慢的2倍,当快指针为None时,说明已经找到中间节点了    while fast.next is not None and fast.next.next is not None:        slow = slow.next  # 慢指针每次向后移一个位置        fast = fast.next.next  # 快指针每次向后移2个位置     h = slow.next    q = reverse(h)  # 逆至无头节点链表    slow.next = None    p = l    while p is not None and q is not None:        if p.val is not q.val:            return False        q, p = q.next, p.next    if q is None:        return True    else:        return False

倒叙链表(头插法):声明一个头节点,然后遍历每个节点,再头插到链表里面,总共是4步;

保存当前头节点所只向的节点

使当前节点指向头节点所指向的节点

使头节点只向当前节点

使指针(p)指向下一个节点,指向下一次循环

头插法图解:

Python判断回文链表的方法是什么

完整代码:

# 逆置不带头结点的单链表def reverse(head):    h = ListNode(0)    p = head    while p is not None:        x = p.next  # 保存着当前节点指向的下一个节点        p.next = h.next  # 当前项的指向节点指向头节点指向的节点        h.next = p  # 头节点再指向当前节点        p = x  # 使节点指向下一个节点    return h.next

完整代码

# 回文链表,输入1->2输出false,输入1-># 链表类class ListNode:    def __init__(self, x):        self.val = x        self.next = None # 字符串转换为链表def list_node(s):    lt = list(map(int, s.split(' ')))    l = ListNode(0)  # 创建头节点为0的链表    p = l    for i in range(len(lt)):        p.next = ListNode(lt[i])        p = p.next    return l.next# 逆置不带头结点的单链表def reverse(head):    h = ListNode(0)    p = head    while p is not None:        x = p.next  # 保存着当前节点指向的下一个节点        p.next = h.next  # 当前项的指向节点指向头节点指向的节点        h.next = p  # 头节点再指向当前节点        p = x  # 使节点指向下一个节点    return h.next# 是否是回文def palindrome(l):    if l is None:        return True    slow = fast = l    # 查找中间节点,一快一慢指针,快的是慢的2倍,当快指针为None时,说明已经找到中间节点了    while fast.next is not None and fast.next.next is not None:        slow = slow.next  # 慢指针每次向后移一个位置        fast = fast.next.next  # 快指针每次向后移2个位置     h = slow.next    q = reverse(h)  # 逆至无头节点链表    slow.next = None    p = l    while p is not None and q is not None:        if p.val is not q.val:            return False        q, p = q.next, p.next    if q is None:        return True    else:        return Falseif __name__ == '__main__':    print("回文链表")    l = list_node(input())    print(palindrome(l))

运行结果图:

Python判断回文链表的方法是什么

Python判断回文链表的方法是什么

Python判断回文链表的方法是什么

python主要应用领域有哪些

1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网站均为python开发。3.人工智能应用,基于大数据分析深度学习而发展出来的人工智能本质上已经无法离开python。4、系统运维工程项目自动化运维的标配就是python+Django/flask。5、金融理财分析,量化交易,金融分析。6、大数据分析。

感谢大家的阅读,以上就是“Python判断回文链表的方法是什么”的全部内容了,学会的朋友赶紧操作起来吧。相信编程网小编一定会给大家带来更优质的文章。谢谢大家对编程网网站的支持!

--结束END--

本文标题: Python判断回文链表的方法是什么

本文链接: https://www.lsjlt.com/news/307299.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python判断回文链表的方法是什么
    小编今天带大家了解Python判断回文链表的方法是什么,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“Python判断回文链表的方法是...
    99+
    2023-06-26
  • Python判断回文链表的方法
    什么是回文数? 回文数简单的说就是正着倒着读都是一样的,比如:12321,1221,1111等等,正着读也是12321,倒着读也是12321。 首先,接收用户输入数字列表转换成链表 ...
    99+
    2024-04-02
  • python判断回文数的方法
    这篇文章给大家分享的是有关python判断回文数的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python判断回文数的方法:首先将数组转为字符串;然后设置两个指针,一个从左往右遍历字符串,一个从右往左遍历,...
    99+
    2023-06-08
  • c语言判断回文数的方法是什么
    判断一个数是否为回文数的一种简单方法是将该数转化为字符串,然后比较字符串的前一半与后一半是否相等。具体步骤如下: 将输入的数转化为...
    99+
    2023-10-24
    c语言
  • c语言判断是否为回文串的方法是什么
    判断一个字符串是否为回文串的方法可以使用两个指针分别从字符串的开头和结尾向中间移动,每次比较指针位置上的字符是否相等,如果相等则继续...
    99+
    2024-02-29
    c语言
  • C语言判断回文字符串的方法是什么
    判断回文字符串的方法是首尾两个字符逐个比较,依次向中间移动,直到两个指针相遇或者左指针大于右指针。如果在比较过程中发现两个字符不相等...
    99+
    2024-03-02
    C语言
  • c语言回文字符串判断的方法是什么
    判断一个字符串是否是回文字符串的常见方法是使用双指针法。具体步骤如下:1. 定义两个指针,分别指向字符串的首尾字符。2. 循环判断首...
    99+
    2023-08-18
    c语言
  • Python判断整除的方法是什么
    Python中判断整除的方法是使用取模运算符(%)来计算两个数相除的余数,如果余数为0,则表示整除。 示例代码如下: a = 10 ...
    99+
    2023-10-22
    Python
  • Python判断回文数的三种方法实例
    需求: 从控制台输入一个五位数,如果是回文数就打印“是回文数”,否则打印“不是回文数”,例如:11111 12321 12221 “回文”是指正读反读都能读通的句子,它是古今中外都...
    99+
    2024-04-02
  • python中判断素数的方法是什么
    判断一个数是否为素数,可以使用以下方法: def is_prime(num): if num < 2: ...
    99+
    2024-04-02
  • Python怎么判断回文数
    这篇文章主要介绍Python怎么判断回文数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!需求:从控制台输入一个五位数,如果是回文数就打印“是回文数”,否则打印“不是回文数”,例如:11111 12321 12221“...
    99+
    2023-06-14
  • shell判断文件大小的方法是什么
    在shell中判断文件大小的方法是使用test命令或方括号表达式,并结合文件大小的比较符号进行判断。常用的文件大小比较符号如下:- ...
    99+
    2023-05-13
    shell判断文件大小
  • Golang判断两个链表是否相交的方法详解
    目录算法题:判断2个链表相交方法一:map方法二:首尾相接法算法题:判断2个链表相交 面试中可能会问到的算法题,今天总结一下 方法一:map 步骤: 1.遍历list1,以节点为ke...
    99+
    2023-03-14
    Golang判断链表是否相交 Golang判断链表相交 Golang链表相交
  • java判断文件类型的方法是什么
    Java可以通过以下方法来判断文件的类型:1. 使用java.nio.file.Files类的probeContentType()方...
    99+
    2023-10-09
    java
  • 利用Python判断整数是否是回文数的方法有哪些
    这篇文章主要介绍“利用Python判断整数是否是回文数的方法有哪些”,在日常操作中,相信很多人在利用Python判断整数是否是回文数的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”利用Python判...
    99+
    2023-06-20
  • python链表反转的方法是什么
    链表反转的方法有多种,以下是其中两种常见的方法:1. 迭代法:- 首先定义三个指针:prev、cur和next,初始时prev为No...
    99+
    2023-08-18
    python
  • Python字符类型判断的方法是什么
    Python中判断字符类型的方法有以下几种:1. 使用type()函数判断字符的类型。例如,type('a')的返回结果是,表示字符...
    99+
    2023-08-19
    Python
  • 用python 判断一个单链表是否有环.
    用python 判断一个单链表是否有环. https://leetcode.com/problems/linked-list-cycle/ 思路1: 判断一个单链表是否有环, 可以用 set 存放每一个 节点, 这样每次 访问后...
    99+
    2023-01-31
    链表 python
  • 利用Python判断整数是否是回文数的3种方法总结
    前言 所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,比如12321。本文通过三个方法详细介绍了判断的方法,下面来一起看看吧 方法一:逐位判断 原理: 用一个whi...
    99+
    2024-04-02
  • oracle判断表存在则删除的方法是什么
    在Oracle中,可以使用以下语句来判断表是否存在并删除表: DECLARE v_table_exists NUMBER; B...
    99+
    2024-04-09
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作