问题描述
在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()的性质来完成的该题。
结语
不断地去掌握一些函数的性质,可以更快的解决这些问题,成倍的提升做题效率,总结就是惊人的效率是通过不断的训练出来的。