在 Python 中查詢給定兩個字串之間的字典序字串
假設我們有兩個字串 S 和 T,我們需要檢查是否存在一個與 S 和 T 長度相同的字串,並且該字串在字典序上大於 S 且小於 T。如果不存在這樣的字串,則返回 -1。我們需要記住,S = S1S2… Sn 在字典序上小於 T = T1T2… Tn,當且僅當存在一個 i,使得 S1= T1,S2= T2,… Si – 1= Ti – 1,Si < Ti。
因此,如果輸入像 S = "bbb" 和 T = "ddd",則輸出將是 "bbc"
為了解決這個問題,我們將遵循以下步驟:
- n := 字串的大小
- 對於 i 從 n - 1 到 0,遞減 1,執行:
- 如果字串[i] 不等於 'z',則:
- k := 字串[i] 的 ASCII 碼
- 字串[i] := 來自 ASCII 碼 (k + 1) 的字元
- 連線字串字元並返回
- 字串[i] := 'a'
- 如果字串[i] 不等於 'z',則:
示例
讓我們看看下面的實現來更好地理解:
def find_next(string): n = len(string) for i in range(n - 1, -1, -1): if string[i] != 'z': k = ord(string[i]) string[i] = chr(k + 1) return ''.join(string) string[i] = 'a' S = "bbb" T = "ddd" S = list(S) res = find_next(S) if res != T: print(res) else: print(-1)
輸入
"bbb", "ddd"
輸出
bbc
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP