回文判断——python

回文

正向和反向相同的字符串,叫回文

算法思路1——递归

比较简单,就直接上代码了:

#coding=utf-8
def is_palindrome(s):
    if len(s)<=1:
        return True
    else:
        return s[0]==s[-1] and is_palindrome(s[1:-1])

s='level'
print(is_palindrome(s))

如果你处理的是中文,第一行务必加上(限于python2.0版本,3.0以上的不用)

算法思路2——常规方法

#coding=utf-8
s='level'
print s[::-1]==s

小结

从以上两个例子可以发现Python的强大之处在于已有模块的使用,可以简化代码,让我们专注于目标的实现。

  1. 看到回文,可能最先想到的是遍历字符串,首尾相同,去掉首尾,继续首尾相同,可以形成递归模式,就是上面的算法1.
  2. 另外的思路就是三步反转法:字符串分位两部分,用移位运算反转一下,然后比较。
  3. 还有思路就是暴力移位法:一个一个挪了,这种和递归有得一拼。但是时间复杂度稍微高点。
  4. 最后一种就是算法2了,利用字符串的已有库函数,直接反转,内置函数时间复杂度一般位O(n)了。
  5. 更啰嗦一点的方法,采用算法2的思路,但是转化位列表,特别注意最后那个组合字符串的内置方法join:
strlist=input().split()
reslist=strlist[::-1]
print("".join(reslit))
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值