मान लीजिए हमारे पास एक स्ट्रिंग s है। हमें इसके सभी उपस्ट्रिंग्स की सुंदरता का योग ज्ञात करना है। एक स्ट्रिंग की सुंदरता वास्तव में सबसे अधिक बारंबार और सबसे कम बारंबार वर्णों की आवृत्तियों में अंतर है। इसलिए यदि स्ट्रिंग "abaacc" है, तो इसकी आवृत्ति 3 - 1 = 2 है।
इसलिए, यदि इनपुट है s = "xxyzy", तो आउटपुट 5 होगा क्योंकि शून्येतर सुंदरता वाले उपस्ट्रिंग्स ["xxy","xxyz","xxyzy","xyzy","yzy"] हैं, जिनमें से प्रत्येक का सुंदरता मान 1 है।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
res := 0
i को 0 से s के आकार - 1 तक के लिए, करें
j को i+2 से s के आकार - 1 तक के लिए, करें
c := s के सूचकांक i से j तक के उपस्ट्रिंग के वर्णों की आवृत्ति वाला एक मैप
v := c के सभी आवृत्ति मानों की सूची
res := res + (v का अधिकतम - v का न्यूनतम)
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