Python 程式將字串拆分為 k 個不同的分割槽
假設我們有一個字串 s 和一個值 k。k 的值是 s 長度的因子,假設長度為 n。我們可以將 s 拆分為 n/k 個不同的子字串,稱為大小為 k 的 t_i。然後使用這些 t_i 生成 u_i,使得
u_i 中存在的字元是 t_i 中字元的子序列
從這些字串中刪除任何重複的字元,使得 u_i 中每個字元的頻率為 1
我們必須找到這些 u_i 字串
因此,如果輸入類似於 s = "MMPQMMMRM" k = 3,則輸出將為 ["MP", "QM", "MR"],因為 s 的大小為 9,k 為 3,所以 9/3 = 3。字串為 MMP、QMM 和 MRM,但由於我們不支援重複字元,因此它們將為 MP、QM 和 MR。
為了解決這個問題,我們將遵循以下步驟:
- i := 0
- ret := 一個新的列表
- mp := 一個新的對映
- to_print := 空字串
- 當 i < s 的大小時,執行以下操作:
- 如果 i mod k 與 0 相同,並且 i 不為 0,則
- 將 to_print 插入 ret 的末尾
- 清空 mp 和 to_print
- 如果 s[i] 不存在於 mp 中,則
- mp[s[i]] := 0
- to_print := to_print + s[i]
- i := i + 1
- 如果 i mod k 與 0 相同,並且 i 不為 0,則
- 將 to_print 插入 ret 的末尾
- 返回 ret
示例
讓我們看看以下實現以更好地理解
def solve(s, k):
i = 0
ret = []
mp, to_print = {}, ""
while i < len(s):
if i % k == 0 and i != 0:
ret.append(to_print)
mp, to_print = {}, ""
if s[i] not in mp.keys():
mp[s[i]] = 0
to_print += s[i]
i += 1
ret.append(to_print)
return ret
s = "MMPQMMMRM"
k = 3
print(solve(s, k))輸入
"MMPQMMMRM", 3
輸出
['MP', 'QM', 'MR']
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP