สมมติว่าเรามีสตริง เราต้องตรวจสอบว่าอักขระของสตริงที่กำหนดสามารถสับเปลี่ยนเพื่อสร้าง palindrome ได้หรือไม่
ดังนั้น หากอินพุตเป็น s ="aarcrce" เอาต์พุตจะเป็น True เนื่องจากเราสามารถสับเปลี่ยนอักขระเพื่อสร้าง "racecar" ซึ่งเป็นพาลินโดรมได้
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ขนาด :=256
- freq :=อาร์เรย์ขนาด 256 และเติม 0
- สำหรับฉันในช่วง 0 ถึงขนาดของ s ทำ
- ความถี่ที่เพิ่มขึ้นของอักขระ s[i] ในอาร์เรย์ความถี่ 1
- odd_count :=0
- สำหรับฉันในช่วง 0 ถึงขนาด ทำ
- ถ้า freq[i] เป็น idd แล้ว
- odd_count :=odd_count + 1
- ถ้า odd_count> 1 แล้ว
- คืนค่าเท็จ
- ถ้า freq[i] เป็น idd แล้ว
- คืนค่า True
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
size = 256 def solve(s) : freq = [0] * size for i in range( 0, len(s)) : freq[ord(s[i])] = freq[ord(s[i])] + 1 odd_count = 0 for i in range(0, size) : if freq[i] % 2 == 1 : odd_count = odd_count + 1 if odd_count > 1: return False return True s = "aarcrce" print(solve(s))
อินพุต
"aarcrce"
ผลลัพธ์
True