LeetCode 🔴 2663. Lexicographically Smallest Beautiful String
🔗 2663. Lexicographically Smallest Beautiful String 2416
tags: Weekly Contest 343
字串(String)
貪心(Greedy)
題意
如果一個字串滿足以下條件,則可以稱其為 美麗的(beautiful) :
- 它由英文小寫字母的前 個字母組成。
- 它不包含任何長度為 或更長的回文子字串。
給定一個長度為 的美麗字串 和一個正整數 。
返回一個長度同樣為 的美麗字串,且在所有大於 的美麗字串中,其字典序是最小的。如果不存在這樣的字串,則返回一個空字串。
約束條件
- 是一個美麗字串。
思路:貪心(Greedy)
由於只能使用前 個小寫字母,因此可以將字串 的每一個字元想像成一個 進位制的數字。首先將字串 轉換為數字表示,方便進行運算。這樣可以將問題轉換為一個進位運算的問題。
且根據回文字串的性質,若 ,則長度為 的回文字串必會包含一個長度為 的回文字串。故在檢查一個字串沒有長度為 或更長的回文字串,只需要考慮有沒有長度為 和 的回文子字串即可。
因此我們可以使用 貪心(Greedy) 的方式來解決這個問題,由於要在字典序大於 的字串中找到字典序最小的符合條件的字串,因此我們可以從字串的最後一位開始,逐步向前檢查並嘗試增加當前位的數值。如果增加後數值超過了 ,則將其置為 0 並向前一位進位。進位後需要檢查是否形成了回文子串,若形成則繼續增加當前位的數值。這樣循環直到找到符合條件的字串或者無法進位為止。
由於給定的字串 是一個美麗字串,因此可以確保未被修改過的部分與其前面的字元都不會形成回文字串。
複雜度分析
- 時間複雜度:
- 空間複雜度:,如果能直接修改字串 的話,空間複雜度可以降為 。
1 | class Solution: |
1 | class Solution { |
寫在最後
Cover photo is generated by @たろたろ, thanks for their work!
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 十六個天亮!
評論
WalineGiscus