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

ค้นหาสตริงพาลินโดรม B โดยกำหนดให้สตริง A เป็นผลสืบเนื่องของ B ใน C++


สมมติว่าเรามีสตริง A เราต้องหาสตริง B อีกอันที่จะเป็นพาลินโดรม และสตริงที่กำหนด A จะเป็นชุดย่อยของ B ลำดับที่ตามมาของสตริงคือสตริงที่สามารถสร้างได้โดยการลบอักขระบางตัวโดยไม่เปลี่ยนลำดับของอักขระที่เหลือ สมมติว่าสตริงเป็น "cotst" จากนั้นสตริงที่สร้างจะเป็น "การแข่งขัน" สำหรับอินพุตของโปรแกรมนี้ เราเลือก A =“ab” สตริงที่สร้างจะเป็น “abba” นี่คือ palindrome

เพื่อแก้ปัญหานี้ เราจะปฏิบัติตามแนวทางนี้ ง่ายมาก เราจะย้อนกลับ A จากนั้นผนวกส่วนที่กลับด้านหลัง A และรูปแบบ B ดังนั้น B =A + ย้อนกลับ (A)

ตัวอย่าง

#include<iostream>
#include<algorithm>
using namespace std;
bool isPalindrome(string str) {
   string temp = str;
   reverse(str.begin(), str.end());
   return str == temp;
}
string formPalindromeStr(string A) {
   string B = A;
   reverse(A.begin(), A.end());
   A = A + B;
   if (isPalindrome(B))
      return B;
      return A;
}
string reverse(string input) {
   string temp = input;
   int left, right = 0;
   right = temp.length() - 1;
   for (left = 0; left < right; left++, right--)
   swap(temp[left], temp[right]);
   return temp;
}
int main(int argc, char const *argv[]) {
   string A = "Hello";
   cout << "The B is: " << formPalindromeStr(A);
}

ผลลัพธ์

The B is: olleHHello