找到一個迴文字串 B,使得給定的字串 A 為 C++ 中 B 的子序列


假設我們有一個字串 A,我們需要找到另一個字串 B,即迴文字串。並且給定的字串 A 將成為 B 的子序列。字串的子序列是一個字串,可以透過刪除一些字元而不更改剩餘字元的順序來形成。假設字串為 “cotst”,則生成的字串為 “contest”。對於此程式的輸入,我們選擇了 A = “ab”,生成的字串為 “abba”,即迴文字串。

為了解決這個問題,我們將遵循這種方法。這很簡單,我們將反轉 A,然後將反轉的部分附加到 A 之後,形成 B。因此 B = A + reverse(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

更新於:2020 年 1 月 3 日

140 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告