用 Python 编写程序,找出给定字符串中不同子字符串的数量

pythonserver side programmingprogramming更新于 2025/12/2 9:48:17

假设我们得到一个用"s"表示的子字符串。我们必须找出唯一的子字符串并返回这些子字符串的数量作为输出。

因此,如果输入为 s = 'prrstvt',则输出将为 26。

不同的子字符串将为 −

'pr', 'rrs', 'st', 'rr', 'tv', 'rstv', 'stvt', 'prrstv', 'prrstvt', 'rrstvt', 's', 'prrst', 'stv'、'rrstv'、'rst'、'v'、'tvt'、'rstvt'、'r'、'rs'、'vt'、't'、'prr'、'p'、'rrst' 和 'prrs'。

为了解决这个问题,我们将遵循以下步骤 −

  • visited := a new map
  • 对于每个索引 ind 和 s 中的值 let,执行
    • temp :=一个新的集合
    • 如果 ind-1 存在于 accessed 中,则
      • 对于 accessed[ind-1] 中的每个 has_let,执行
        • 将(has_let + let)添加到列表 temp
    • 将(let)添加到列表 temp
    • visited[ind] := temp
  • res := 一个新的集合
  • 对于 accessed 中的每个集合,执行
    • 将(visited[sets])添加到 res
  • 返回 res 的大小

示例

让我们看看下面的实现以便更好地理解 −

def solve(s):
   visited = dict()
   for ind, let in enumerate(s):
      temp = set()
      if ind-1 in visited:
         for has_let in visited[ind-1]:
            temp.add(has_let+let)
      temp.add(let)
      visited[ind] = temp
   res = set()
   for sets in visited:
      res.update(visited[sets])
   return len(res)

print(solve('prrstvt'))

输入

'prrstvt'

输出

26

相关文章


有用资源