在 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