假设我们有一个回文字符串回文,我们必须用任何小写英文字母替换一个字符,以使该字符串成为词典上可能不是回文的最小字符串。现在,这样做之后,我们必须找到最终的字符串。如果没有办法,请返回空字符串。因此,如果输入像“ 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
让我们看下面的实现以更好地理解-
#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