程序以在 Python 中查找字符串中存在字谜的所有子字符串
假设我们有一个带有小写字母的字符串 s。我们必须在 s 中找到所有在 s 中必须在不同位置的另一个子串,该子串是所取子串的变位词。我们必须按字典顺序找到一个子串列表。
因此,如果输入类似于 s = "abcba",那么输出将是 ['a', 'a', 'ab', 'abc', 'abcb', 'b', 'b', 'ba' , 'bc', 'bcba', 'cb', 'cba'] 对于它们中的每一个,我们可以在字符串本身中找到不同的字谜。
示例
让我们看下面的实现来更好地理解
from collections import defaultdictdef solve(s):
res = []
L = len(s)
for i in range(1, L + 1):
smap = defaultdict(list)
for j in range(L - i + 1):
cs = s[j : j + i]
k = "".join(sorted(cs))
smap[k].append(cs)
for k, v in smap.items():
if len(v) >= 2:
res.extend(v)
return sorted(res)
s = "abcba"
print(solve(s))
输入
"abcba"输出结果
['a', 'a', 'ab', 'abc', 'abcb', 'b', 'b', 'ba', 'bc', 'bcba', 'cb', 'cba']
以上是 程序以在 Python 中查找字符串中存在字谜的所有子字符串 的全部内容, 来源链接: utcz.com/z/347463.html