【发布时间】:2016-05-16 22:52:52
【问题描述】:
我似乎无法在以下问题上找到有效的答案:
假设我返回了以下 LONG int(或任何字符串):
longnr = 26731623516244147357200698985770699644500911065919594945175038371437093557337774208653
我可以通过以下方式轻松拆分:
splitnr = [26731,62351,624,41,4735,720,0698,9857,7069,964,450,091,10659,195,94,94517,5038,3714,3709,35,573,37,7,74208653]
每个组合都是唯一的,因此没有重复的数字。 我在简单的代码中通过迭代每个项目并将它们添加到一个字符串,直到它找到一个重复的数字来做到这一点。然后把这个字符串写在一个列表中,空字符串,添加刚刚检查的数字并继续直到全部完成。
我想要的是尽可能少的组合。 因此,首先尝试找出所有 10 位的唯一组合,然后再找到 9 个,其余的为 ,8,7 等
我需要正则表达式吗? 我无法完成这项工作,有人建议我需要大量模式。
下一个选项:
len(set(str(longnr)[0:10])) == len(str(longnr)[0:10])
这适用于前 10 个检查它是否是唯一的。
如何以最佳方式从这里出发?
必须像 splitnr 一样保持顺序。
【问题讨论】:
-
这里绝对不是使用正则表达式的地方。
-
我是这么想的,例如:*.com/questions/12870489/…我做不到。
-
这只是为了好玩还是你想解决一些实际问题?如果你的字符串只是
0000000.....000,会发生什么?每个子字符串的最大长度是 10 吗?这必须是完美的吗? -
有两个长度为 9 的子字符串还是 10 之一和 8 之一更好?
-
既有趣又有问题 :) 如果我的字符串是 '000000',结果将是 [0,0,0,0,0,0] 如果我的字符串是 'abcfeagd',结果必须是 [abcfe,agd] 越大,事情就会发生变化: 'abcfeagdqp' : 结果必须是 [a,bcfeagdqp] 现在可以形成更大的独特组合。 2*length 9 或 8 + 10 没关系。
标签: python string algorithm split pattern-matching