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