回文
正向和反向相同的字符串,叫回文。
算法思路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.
- 另外的思路就是三步反转法:字符串分位两部分,用移位运算反转一下,然后比较。
- 还有思路就是暴力移位法:一个一个挪了,这种和递归有得一拼。但是时间复杂度稍微高点。
- 最后一种就是算法2了,利用字符串的已有库函数,直接反转,内置函数时间复杂度一般位O(n)了。
- 更啰嗦一点的方法,采用算法2的思路,但是转化位列表,特别注意最后那个组合字符串的内置方法join:
strlist=input().split()
reslist=strlist[::-1]
print("".join(reslit))