在python中找到给定字符串中的不同子字符串的数量的程序
假设我们有一个由’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’。
为了解决这个问题,我们将遵循以下步骤 –
- 已访问 := 新映射
- 对于给定字符串s中的每个索引ind和值let,执行以下操作
- temp := 一个新集合
- 如果ind-1存在于visited中,那么
- 对于visited[ind-1]中的每个has_let,执行以下操作
- 将has_let + let添加到列表temp中
- 将let添加到列表temp中
- visited[ind] := temp
- res := 一个新集合
- 对于visited中的每个集合,执行以下操作
- 将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