用 Python 编写程序,查找字符串中存在所有字谜的子字符串
pythonserver side programmingprogramming更新于 2025/12/18 0:12:17
假设我们有一个包含小写字母的字符串 s。我们必须查找 s 中的所有内容,其中 s 中不同位置处必须存在另一个子字符串,该子字符串是该子字符串的字谜。我们必须按字典顺序找到一个子字符串列表。
因此,如果输入为 s = "abcba",则输出将是 ['a', 'a', 'ab', 'abc', 'abcb', 'b', 'b', 'ba', 'bc', 'bcba', 'cb', 'cba'],对于每个子字符串,我们都可以找到字符串本身中存在的不同字谜。
为了解决这个问题,我们将遵循以下步骤 −
res := 一个新的列表
L := s 的大小
对于 1 到 L 范围内的 i,执行
smap := 一个空字典,并且所有值都是列表类型
对于 0 到 L - i 范围内的 j,执行
cs := s 的子字符串(从索引 j 到 j + i-1])
k := 以排序形式连接 cs 项后的字符串
在 smap[k] 末尾插入 cs
对于 smap 中的每个键 k 和值 v,执行
如果 v 的大小 >= 2,然后
将 v 的元素插入到 res 中
排序后返回 res
示例
让我们看看下面的实现以便更好地理解
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']
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

