打破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