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

ตรวจสอบว่าอักขระของสตริงที่กำหนดสามารถจัดเรียงใหม่เพื่อสร้าง palindrome ใน Python . ได้หรือไม่


สมมติว่าเรามีสตริง s เราต้องตรวจสอบว่าอักขระของสตริงที่กำหนดสามารถสับเปลี่ยนเพื่อสร้าง palindrome ได้หรือไม่

ดังนั้น หากอินพุตเป็น s ="raaecrc" เอาต์พุตจะเป็น True เนื่องจากเราสามารถจัดเรียงค่านี้ใหม่เป็น "racecar" ซึ่งเป็นพาลินโดรมได้

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

  • freq :=แผนที่สำหรับเก็บอักขระทั้งหมดและความถี่ใน s
  • odd_count :=0
  • สำหรับแต่ละองค์ประกอบ i ในรายการค่าความถี่ทั้งหมด ทำ
    • ถ้าฉันแปลก งั้น
      • odd_count :=odd_count + 1
    • ถ้า odd_count> 1 แล้ว
      • คืนค่าเท็จ
  • คืนค่า True

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

ตัวอย่าง

from collections import defaultdict
def solve(st) :
   freq = defaultdict(int)
   for char in st :
      freq[char] += 1
   odd_count = 0
   for i in freq.values():
      if i % 2 == 1:
         odd_count = odd_count + 1
      if odd_count > 1:
         return False
   return True
s = "raaecrc"
print(solve(s))

อินพุต

"raaecrc"

ผลลัพธ์

True