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

ตรวจสอบว่าครึ่งส่วนของสตริงมีอักขระอย่างน้อยหนึ่งตัวใน Python . หรือไม่


สมมติว่าเรามีสตริงตัวพิมพ์เล็ก เราต้องตรวจสอบว่าเราสามารถแยกสตริงออกจากตรงกลางได้หรือไม่ซึ่งจะทำให้สองส่วนมีความแตกต่างกันอย่างน้อยหนึ่งอักขระระหว่างสองด้าน อาจมีอักขระต่างกันหรือความถี่ต่างกันของอักขระแต่ละตัว หากสตริงเป็นสตริงที่มีความยาวคี่ ให้ข้ามองค์ประกอบตรงกลางและตรวจสอบองค์ประกอบที่เหลือ

ดังนั้น หากอินพุตเป็น s ="helloohekk" ผลลัพธ์จะเป็น True เนื่องจาก "helloohekk" ดังนั้นส่วนซ้ายคือ "hello" ส่วนขวาคือ "ohhekk" ซ้ายและขวาต่างกัน

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

  • left_freq :=แผนที่ว่างเปล่า
  • right_freq :=แผนที่ว่างเปล่า
  • n :=ขนาดของ s
  • สำหรับฉันในช่วง 0 ถึงผลหารของ (n/2) - 1 ทำ
    • left_freq[s[i]] :=left_freq[s[i]] + 1
  • สำหรับฉันอยู่ในช่วงเชาวน์ของ (n/2) ถึง n - 1 ทำ
    • right_freq[s[i]] :=right_freq[s[i]] + 1
  • สำหรับอักขระแต่ละตัวใน s ทำ
    • ถ้า right_freq[char] ไม่เหมือนกับ left_freq[char] แล้ว
      • คืนค่า True
  • คืนค่าเท็จ

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

ตัวอย่าง

from collections import defaultdict
def solve(s):
   left_freq = defaultdict(int)
   right_freq = defaultdict(int)
   n = len(s)
   for i in range(n//2):
      left_freq[s[i]] += 1
   for i in range(n//2, n):
      right_freq[s[i]] += 1
   for char in s:
      if right_freq[char] != left_freq[char]:
         return True
   return False
s = "helloohekk"
print(solve(s))

อินพุต

"helloohekk"

ผลลัพธ์

True