在Python中查找所有子字符串的美丽度之和的程序

在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的最小值)

  • 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程