在 C++ 中破坏回文数
假设我们有一个回文字符串 palindrome,我们需要用任意小写英语字母替换其中一个字符,以便字符串成为词典顺序最小的非回文字符串。现在,经过这样的处理后,我们必须找到最终的字符串。如果没有办法这样做,则返回空字符串。因此,如果输入类似于“abccba”,则输出将是“aaccba”。
为了解决这个问题,我们将遵循以下步骤 −
changed := false
如果字符串长度为 1,则返回一个空字符串
i := 0 并且 j := s 的长度 - 1
leftA := True 并且 rightA := True
while i < 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
广告