将字符串分成 k 个不同的子串的 Python 程序

将字符串分成 k 个不同的子串的 Python 程序

假设我们有一个字符串 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,则
      • 在 ret 的末尾插入 to_print
      • 清除 mp 和清除 to_print
    • 如果 s [i] 不在 mp 中,则
      • mp [s [i]]:= 0
      • to_print:= to_print + s [i]
    • i:= i +1
  • 在 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教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程