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

假设我们有一个带有小写字母的字符串 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']

以上是 程序以在 Python 中查找字符串中存在字谜的所有子字符串 的全部内容, 来源链接: utcz.com/z/347463.html

回到顶部