我即将编写一个函数,它将返回一个最短的一组字母,最终会创建给定的单词.
例如字abkebabkebabkeb通过重复创建abkeb字.我想知道,如何有效地分析输入词,以获得创建输入词的最短字符周期.
你知道如何在O(1)中获得m元素组合的第k个元素吗?预期的解决方案应适用于任何大小的输入数据和任何m值.
让我通过示例(python代码)解释这个问题:
>>> import itertools
>>> data = ['a', 'b', 'c', 'd']
>>> k = 2
>>> m = 3
>>> result = [''.join(el) for el in itertools.combinations(data, m)]
>>> print result
['abc', 'abd', 'acd', 'bcd']
>>> print result[k-1]
abd
Run Code Online (Sandbox Code Playgroud)
对于给定数据,m元素组合的第k个(在该示例中为第2个)元素是abd.是否可以在不创建整个组合列表的情况下获得该值(abd)?
我问,因为我有大约1,000,000个字符的数据,并且不可能创建完整的m字符长度组合列表来获得第k个元素.
解决方案可以是伪代码,也可以是描述此问题的页面的链接(遗憾的是,我没有找到).
谢谢!