在 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

更新時間: 29-4-2020

2 千 + 次瀏覽

開啟你的職業生涯

完成課程認證

開始
廣告
© . All rights reserved.