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

การลบขั้นต่ำเพื่อทำการเรียงสับเปลี่ยน palindrome ใน C ++


คำชี้แจงปัญหา

ให้สตริง S เราต้องหาอักขระขั้นต่ำที่เราสามารถลบออกเพื่อทำการเรียงสับเปลี่ยนของสตริง S เป็นพาลินโดรม

ตัวอย่าง

หาก str =“abcdba” เราจะลบอักขระ 1 ตัวออก เช่น 'c'or 'd'

อัลกอริทึม

<ก่อน>1. palindrome มีสองประเภทคือ palindrome ที่มีความยาวเท่ากันและ palindromes ที่มีความยาวคี่2 เราสามารถสรุปได้ว่า palindrome ที่มีความยาวคู่ต้องมีอักขระทุกตัวที่เกิดขึ้นเป็นจำนวนคู่ 3 palindrome คี่ต้องมีอักขระทุกตัวที่เกิดขึ้นเป็นจำนวนเท่า ๆ กันยกเว้นอักขระหนึ่งตัวที่เกิดขึ้นเป็นเลขคี่ 4 ตรวจสอบความถี่ของอักขระทุกตัวและนับจำนวนอักขระที่เกิดขึ้นเป็นจำนวนคี่ ผลที่ได้คือจำนวนอักขระความถี่คี่ทั้งหมดลบ 1

ตัวอย่าง

#include #define MAX 26 โดยใช้เนมสเปซ std;int minCharactersRemoved (สตริง str) { int hash[MAX] ={0}; สำหรับ (int i =0; str[i]; ++i) { hash[str[i] - 'a']++; } int cnt =0; สำหรับ (int i =0; i