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