用 C++ 分解回文
c++server side programmingprogramming
假设我们有一个回文字符串 palindrome,我们必须用任意小写英文字母替换一个字符,使该字符串成为字典顺序最小的非回文字符串。现在,在完成此操作后,我们必须找到最终的字符串。如果没有办法找到,则返回空字符串。因此,如果输入为"abccba",则输出为"aaccba"。
为了解决这个问题,我们将遵循以下步骤 −
changed := false
如果字符串的大小为 1,则返回一个空白字符串
i := 0 且 j := s 的长度 – 1
leftA := True 且 rightA := True
当 i < j −时
如果 s[i] 不是 ‘a’,则将 s[i] 设置为 ‘a’ 并返回 s
将 i 增加 1 并将 j 减少 1
s[s 的大小 - 1] := ‘b’
return 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