在 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
JavaScript
PHP