欢迎点击「算法与编程之美」↑关注我们!
本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
问题描述
在python中经常遇到一些关于求字符串的问题,比如;找出最长回文字符串,找出字符串中不含重复字符的最长字符串,这时我们总是被这些问题给难住,该如何解决呢?
解决方案
这些问题我们主要从字符串中的性质去分析,可以利用列表的变化来找出字符串的变化,从而来解决问题;例如我们在解决找出最长字符回文串时便采用了这一种方法:
代码示例:
def raw(k):
s=[]
for u in k:
s.append(u)
s.reverse()
return (''.join(s))
p=[]
n=input('请输入字符串:')
for a in range(len(n)+1):
for b in range(len(n)+1):
k=n[b:a]
if k==raw(k):
p.append(k)
print(max(p))
首先我们先定义一个可以从k中取出所有字符串的列表s,在输出时将列表s的值返回一个新的字符串,将返回的字符串的逆序,然后在与原字符串k作比较,得出满足条件的值。
对于第二个问题,找出字符串中不含重复字符的最长字符串,我们要注意一个特别重要的函数set(),主要是要运用该函数的性质,能够返回一个不重复且无序的字符串。
代码示例:
def raw(n):
k=[]
for b in range(len(n)+1):
for a in range(1,b):
if len(n[a:b])==len(set(n[a:b])):
l=n[a:b]
k.append(len(l))
return max(k)
print(raw('abcabc'))
其中还是set()的性质来完成的该题。
结语
不断地去掌握一些函数的性质,可以更快的解决这些问题,成倍的提升做题效率,总结就是惊人的效率是通过不断的训练出来的。
END
实习编辑 | 王文星
责 编 | 王卓越
where2go 团队
微信号:算法与编程之美
长按识别二维码关注我们!
温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!