您好,登录后才能下订单哦!
这篇文章主要讲解了“如何用python寻找一个字符串里的最大回文”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用python寻找一个字符串里的最大回文”吧!
题目要求如下:
寻找一个字符串里的最大回文,例如字符串"sddcbabcdtre",这里面的最大回文是"dcbabcd"
所谓回文,是指一段字符串从左向右和从右向左看是一样的
题目讲明,是字符串里包含了一段回文,而不是整段字符串是一段回文
回文的长度可以是偶数,也可以是奇数
长度为1的字符串不算回文
对字符串进行遍历
每遍历到一个字符时,以其为中心向左右两侧验证是否构成回文
需要变量记录回文的起始位置和长度
#coding=utf-8
str_value = "sddcbabcdtre"
#str_value = "aaa"
i = 0
start_index = 0  #记录回文的起始位置
plalindrome_len = 0
while i < len(str_value)-1:
    tmp_len = 0
    left,right = 0,0
    #假设回文长度是偶数
    if str_value[i] == str_value[i+1]:
        # 找到下一个要比较的位置
        left,right = i-1,i+2
        tmp_len = 2
        #注意循环的条件
        while left >= 0 and right < len(str_value):
            if str_value[left] == str_value[right]:
                left -= 1           #向前
                right += 1          #向后
                tmp_len += 2        #长度要加2
            else:
                break
        if tmp_len > plalindrome_len:
            plalindrome_len = tmp_len
            start_index = left + 1  #此处要加1
    #假设回文长度是奇数
    if i > 0 and str_value[i-1] == str_value[i+1]:
        left,right = i-2,i+2
        tmp_len = 3
        while left >= 0 and right < len(str_value):
            if str_value[left] == str_value[right]:
                left -= 1
                right += 1
                tmp_len += 2
            else:
                break
        if tmp_len > plalindrome_len:
            plalindrome_len = tmp_len
            start_index = left + 1
    i += 1
if plalindrome_len == 0:
    print 'no plalindrome'
else:
    print str_value[start_index:
    start_index+plalindrome_len]
程序的关键在于以某一个字符为中心,向左右两侧遍历,以判断是否构成回文,这很像将一张纸对折
对于while 循环,由于是在遍历字符串,那么对于两端的边界就必须做越界的检查,这是不可缺少的
程序里可能存在多个回文,因此想找出最大的,必须借助tmp_len来和已经找到的最大回文做比较
感谢各位的阅读,以上就是“如何用python寻找一个字符串里的最大回文”的内容了,经过本文的学习后,相信大家对如何用python寻找一个字符串里的最大回文这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。