ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python判断是否可以只插一个字符,让字符串变成回文,返回true/false

2021-06-29 09:52:14  阅读:200  来源: 互联网

标签:false liA liB python 可以 li state deepcopy true


这个需要考虑几种情况:

  1. 1 2 3 4 5 3 2 1 可以
  2. 1 2 4 3 5 3 2 1 可以
  3. 1 2 4 3 3 5 2 1 不可以
  4. 1 2 3 4 4 3 2 1 可以
  5. 1 2 3 5 3 2 1 可以
  6. 1 2 4 5 3 2 1 不可以
  7. 1 2 4 4 3 2 1 可以
  8. 1 3 4 4 3 2 1 可以

或者用土办法想 ,插入数有俩个纬度,1,单数会变成偶数,偶数会变成单数
2,插入的位置 只有左半部,中间,右半部
所以要让填完之后的字符串变成回文,也就是左右相等。
所以从头开始比对,发现不一样的,就insert。然后判断是不是回文就可以了

所以我们的函数内可以这么写:

def panduan(str1):
    from copy import deepcopy
    li = list(str1)
    state = False
    if li == li[::-1]:
        state = True
    else:
        for i in range(len(li)/2):
            if li[i] != li[-1-i]:
                liA = deepcopy(li)
                liA.insert(i, li[-1 - i])
                liB = deepcopy(li)
                liB.insert(-i,li[i])
                if liA == liA[::-1]:
                    print 'liA:',''.join(liA)
                    state = True
                if liB == liB[::-1]:
                    print 'liB:',''.join(liB)
                    state = True
    return state

print panduan("12345421")

 

标签:false,liA,liB,python,可以,li,state,deepcopy,true
来源: https://blog.51cto.com/u_15282986/2952297

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有