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