找到一个回文字符串 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 次浏览

开启你的职业生涯

通过完成课程获得认证

开始
广告