首页 文章资讯内容详情

程序以在 Python 中查找字符串中存在字谜的所有子字符串

2026-06-03 1 花语

假设我们有一个带有小写字母的字符串s。我们必须在s中找到所有在s中必须在不同位置的另一个子串,该子串是所取子串的变位词。我们必须按字典顺序找到一个子串列表。

因此,如果输入类似于s="abcba",那么输出将是[a,a,ab,abc,abcb,b,b,ba,bc,bcba,cb,cba]对于它们中的每一个,我们可以在字符串本身中找到不同的字谜。

示例

让我们看下面的实现来更好地理解

from collections import defaultdict def 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]