用 Python 尋找詞典序中最小的非迴文串


假設我們有一個迴文字串 s。我們需要更改一個字元,使其 s 不再是迴文,並且是詞典序中最小的。

因此,如果輸入類似於 s = "level",那麼輸出將為 "aevel",因為我們可以將第一個 "l" 更改為 "a" 以獲得詞典序中最小的非迴文串。

為了解決這個問題,我們將按照以下步驟操作 −

  • 對於 i 從 0 到 (s 長度 / 2) 的整數部分進行以下操作
    • 如果 s[i] 與 "a" 不同,那麼
      • s := s 中所有字元的新列表
      • s[i] := "a"
      • 連線 s 中的所有字元並返回
  • s := s 中所有字元的新列表
  • s 的最後一個元素 := "b"
  • 連線 s 中的所有字元並返回

讓我們仔細觀察以下實現來獲得更好的理解 −

示例

 線上演示

class Solution:
   def solve(self, s):
      for i in range(len(s) // 2):
         if s[i] != "a":
            s = list(s)
            s[i] = "a"
            return "".join(s)
      s = list(s)
      s[-1] = "b"
      return "".join(s)
ob = Solution()
s = "level"
print(ob.solve(s))

輸入

"level"

輸出

aevel

更新時間:19-11-2020

315 次瀏覽

開啟你的職業生涯

透過完成該課程獲得認證

開始
廣告