Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm một chuỗi palindromic B sao cho chuỗi A đã cho là một dãy con của B trong C ++

Giả sử chúng ta có một chuỗi A, chúng ta phải tìm một chuỗi B khác, đó sẽ là palindrome. Và chuỗi A đã cho sẽ là chuỗi con của B. Chuỗi con của một chuỗi là một chuỗi có thể được tạo thành bởi nó bằng cách xóa một số ký tự mà không thay đổi thứ tự của các ký tự còn lại. Giả sử chuỗi là “cotst”, thì chuỗi được tạo sẽ là “cuộc thi”. Đối với đầu vào của chương trình này, chúng tôi đã chọn A =“ab”, chuỗi được tạo sẽ là “abba”, đây là palindrome.

Để giải quyết vấn đề này, chúng ta sẽ thực hiện theo cách tiếp cận này. Điều này rất đơn giản, chúng ta sẽ đảo ngược chữ A, sau đó nối phần đã đảo ngược sau A, và tạo thành B. Vì vậy, B =A + đảo ngược (A)

Ví dụ

#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);
}

Đầu ra

The B is: olleHHello