将字符串拆分为 k 个不同部分的 Python 程序
pythonserver side programmingprogramming更新于 2025/12/21 15:08:17
假设我们有一个字符串 s 和一个值 k。k 的值是 s 长度的因子,假设长度为 n。我们可以将 s 拆分为 n/k 个不同的子字符串,称为 t_i,大小为 k。然后使用这些 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 := a new list
- mp := a new map
- to_print := blank string
- while i < s 的大小,执行
- 如果 i mod k 与 0 相同且 i 不为 0,则
- 在 ret 末尾插入 to_print
- 清除 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,则
- 在 ret 末尾插入 to_print
- 返回 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']
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

