เราได้รับสตริง 'str' ที่มีความยาวเท่าใดก็ได้ งานคือการจัดเรียงอักขระใหม่ในลักษณะที่จะมีสตริงย่อยสูงสุดที่จะเป็นสตริงพาลินโดรมโดยไม่ต้องเพิ่มหรือลบอักขระออกจากสตริงอินพุตที่กำหนด สตริง Palindrome เป็นสตริงที่อักขระถูกจัดเรียงในลักษณะที่ออกเสียงเหมือนกันตั้งแต่ต้นและสุดท้าย
ให้เราดูสถานการณ์อินพุตเอาต์พุตที่หลากหลายสำหรับสิ่งนี้ -
ป้อนข้อมูล − string str ="อิทนิน"
ผลผลิต − การจัดเรียงสตริงใหม่เพื่อเพิ่มจำนวนสตริงย่อยพาลินโดรมสูงสุดคือ:iinnt
คำอธิบาย − เราได้รับตัวแปรประเภทสตริง สมมติว่า str ตอนนี้เราจะจัดเรียงอักขระของสตริงอินพุตใหม่ในลักษณะที่จะเป็นสตริง palindrome สูงสุด และหากไม่สามารถทำได้ก็จะส่งคืน 'NOT POSSIBLE' ดังนั้นเอาต์พุตที่มีสตริงอินพุตที่กำหนดคือ 'iinnt'
ป้อนข้อมูล − string str ="abaaaabb"
ผลผลิต − การจัดเรียงสตริงใหม่เพื่อเพิ่มจำนวนสตริงย่อยพาลินโดรมสูงสุดคือ:aaaaabbb
คำอธิบาย − เราได้รับตัวแปรประเภทสตริง สมมติว่า str ตอนนี้เราจะจัดเรียงอักขระของสตริงอินพุตใหม่ในลักษณะที่จะเป็นสตริง palindrome สูงสุด และหากไม่สามารถทำได้ก็จะส่งคืน 'NOT POSSIBLE' ดังนั้นเอาต์พุตที่มีสตริงอินพุตที่กำหนดคือ aaaaabbb'
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ป้อนตัวแปรประเภทสตริง สมมติว่า str และคำนวณขนาดของสตริงและเก็บไว้ในความยาวที่ตั้งชื่อตัวแปร
-
ส่งข้อมูลไปยังฟังก์ชัน Rearr_string(str, length)
-
ภายในฟังก์ชัน Rearr_string(str, length)
-
ประกาศอาร์เรย์ประเภทจำนวนเต็มขนาด 26 สมมติว่า arr[26] และกำหนดค่าเริ่มต้นด้วย 0
-
ประกาศตัวแปรชั่วคราว 'ชั่วคราว' ของประเภทสตริง
-
เริ่มวนรอบ FOR จาก i ถึง 0 จนถึง i น้อยกว่าความยาว ภายในลูป ให้ตั้งค่า arr[str[i] - 'a']++
-
เริ่มลูป FOR จาก i ถึง 0 จนถึง i น้อยกว่า 26 ภายในลูป ให้เริ่มลูปอื่น FOR จาก j ถึง 0 จนถึง j น้อยกว่า arr[i] ภายในลูป ตั้งค่า temp เป็น temp + (char)(97 + i)
-
อุณหภูมิขากลับ
-
-
พิมพ์ผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; string Rearr_string(string str, int length){ int arr[26] = { 0 }; string temp = ""; for(int i = 0; i < length; i++){ arr[str[i] - 'a']++; } for(int i = 0; i < 26; i++){ for(int j = 0; j < arr[i]; j++){ temp = temp + (char)(97 + i); } } return temp; } int main(){ string str = "itinn"; int length = str.length(); cout<<"Rearrangement of the string to maximize the number of palindromic substrings is: "<<Rearr_string(str, length); return 0; }
ผลลัพธ์
หากเรารันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้
Rearrangement of the string to maximize the number of palindromic substrings is: iinnt