打破C ++中的回文

假设我们有一个回文字符串回文,我们必须用任何小写英文字母替换一个字符,以使该字符串成为词典上可能不是回文的最小字符串。现在,这样做之后,我们必须找到最终的字符串。如果没有办法,请返回空字符串。因此,如果输入像“ abccba”,那么输出将是“ aaccba”。

为了解决这个问题,我们将遵循以下步骤-

  • 已更改:=否

  • 如果字符串的大小为1,则返回一个空白字符串

  • i:= 0和j:= s的长度– 1

  • leftA:= True和rightA:= True

  •  当我<j −

    • 如果s [i]不是'a',则将s [i]设置为'a'并返回s

    • 将i增大1并将j减小1

  • s [s的大小-1]:='b'

  • 返回s

范例(C ++)

让我们看下面的实现以更好地理解-

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   string breakPalindrome(string s) {
      bool changed = false;
      if(s.size() == 1)return "";
      int i = 0, j = s.size() - 1;
      bool leftA = true;
      bool rightA= true;
      while(i < j){
         if(s[i] != 'a'){
            s[i] = 'a';
            return s;
         }
         i++;
         j--;
      }
      s[s.size() - 1] = 'b';
      return s;
   }
};
main(){
   Solution ob;
   cout << (ob.breakPalindrome("abccba"));
}

输入项

"abccba"

输出结果

aaccba