在Python中查找所有子字符串的美丽度之和的程序
假设我们有一个字符串s。我们必须找到所有子字符串的美丽度之和。字符串的美丽度实际上是最常见和最不常见字符之间频率的差异。所以如果字符串是“abaacc”,那么它的频率是3-1 = 2。
因此,如果输入为s =“xxyzy”,则输出将是5,因为具有非零美丽度的子字符串是[“xxy”,“xxyz”,“xxyzy”,“xyzy”,“yzy”],每个都具有美丽值1。
为了解决这个问题,我们将遵循以下步骤−
- res:= 0
-
for i in range 0 to size of s – 1,do
- for j in range i+2 to size of s – 1,do
- c:=包含从索引i到j的s子字符串的字符频率的映射
-
v:= c的所有频率值列表
-
res:= res +(v的最大值 – v的最小值)
- for j in range i+2 to size of s – 1,do
-
return res
示例
让我们看一下以下实现,以获得更好的理解−
from collections import Counter
def solve(s):
res=0
for i in range(len(s)):
for j in range(i+2,len(s)):
c=Counter(s[i:j+1])
v=c.values()
res+=(max(v)-min(v))
return res
s = "xxyzy"
print(solve(s))
输入
"xxyzy"
输出
5