Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาผลรวมของความสวยงามของสตริงย่อยทั้งหมดใน Python


สมมติว่าเรามีสตริง s เราต้องหาผลรวมของความสวยงามของสตริงย่อยทั้งหมด ความงามของสตริงคือความแตกต่างของความถี่ระหว่างอักขระที่ใช้บ่อยที่สุดและความถี่น้อยที่สุด ดังนั้นหากสตริงคือ "abaacc" ความถี่ของมันคือ 3 - 1 =2

ดังนั้น หากอินพุตเป็นเหมือน s ="xxyzy" ผลลัพธ์จะเป็น 5 เพราะสตริงย่อยที่มีความสวยงามไม่เป็นศูนย์คือ ["xxy","xxyz","xxyzy","xyzy","yzy"], แต่ละอันมีค่าความสวยอยู่ที่ 1.

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • res:=0

  • สำหรับฉันในช่วง 0 ถึงขนาด s - 1 ทำ

    • สำหรับ j ในช่วง i+2 ถึงขนาด s - 1 ทำ

      • c:=แผนที่ที่มีความถี่อักขระของสตริงย่อยของ s จากดัชนี i ถึง j

      • v:=รายการค่าความถี่ทั้งหมดของ c

      • res :=res +(สูงสุดของ v - ต่ำสุดของ v)

  • ผลตอบแทน

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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