Algorithm 从随机数中收集唯一数

Algorithm 从随机数中收集唯一数,algorithm,Algorithm,我在谷歌上找不到任何我想要的直接答案,所以就这样 他们是否有从长(“长”不是指数据类型)随机数中收集唯一数字/数字的“算法” 比如,, x=64876578765798768676567684768768761176871761871687268726 我想要从x获得所有可能的唯一数字。我不是在寻找代码。我正在寻找一个“既定的算法”来做这类工作或类似的事情。任何纸张/期刊/书籍链接都会很有用 编辑:如果我要求提供从大量项目中搜索数字/项目的“算法”,答案将是:BFS、DFS、树、图形等。 类似地

我在谷歌上找不到任何我想要的直接答案,所以就这样

他们是否有从长(“长”不是指数据类型)随机数中收集唯一数字/数字的“算法”

比如,, x=64876578765798768676567684768768761176871761871687268726

我想要从x获得所有可能的唯一数字。我不是在寻找代码。我正在寻找一个“既定的算法”来做这类工作或类似的事情。任何纸张/期刊/书籍链接都会很有用

编辑:如果我要求提供从大量项目中搜索数字/项目的“算法”,答案将是:BFS、DFS、树、图形等。 类似地,我的问题不是关于编码,甚至不是关于任何特定的编程语言,而是关于寻找(如果有)一种从随机数中收集唯一数的算法。正如“Muckle_ewe”在评论中所说的那样 ,123可以是1,2,3,12,23,123,但不是13-这就是我的算法要求

请不要给我看代码。我希望有一个参考/名称/链接,指向任何完成这种简单工作或类似工作的已建立算法。当然,任何人都可以为这项简单的工作构建算法,即使是我。但我正在寻找一个公认的成熟算法,可以作为参考

第二次编辑:对要求做了一点修改,实际上我并不需要我认为需要的所有子字符串。我发现后缀树很适合查找所有子字符串。所以这和我想要的并不完全一样,但很接近。好吧,编辑Muckle_ewe的评论,123可以是1,2,3,12,23,但不是13,123-所以我只需要一个长随机数(x)中的1位或2位数字,这是我的算法要求,而不是旧的


---谢谢

Imho,一个算法绑定到一种你在问题中没有提到的语言,所以我选择我知道的最简单的一种,Ruby。我用你的长数字作为字符串使它更容易

x = "6487657876579876867656768476876876117681761871687268726"
x.split("").uniq.join #gives 64875912
现在我可以做得更详细一些,绕过Ruby包含的方法,但重点是什么呢?改变方向盘?认为我比Ruby dev强?如果我愿意,我可以查找他们用来组成Ruby方法的C代码

在OP的编辑后编辑

嗯,经过你的编辑,我终于明白你的意思了。 另请参见此,这里有一个关于后缀树移动算法的解释

我只是一个简单的程序员,所以我喜欢保持简单,所以一个简单的算法是:从第一个字母开始,一直到最后,存储该字母的所有后缀,最后对存储的后缀进行排序并删除重复项。 我想有更快的算法,我没有这个名字,我自己编的。 在Ruby中,这将像这样实现,我使用一个短字符串来保持它。。。。嗯。。。简单。这两个贴图在一个数组中生成数组,所以我先将它们展平,然后再排序和删除重复项

x = "BANANA"
(0...x.length).map {|i|(i...x.length).map { |j|x[i..j]}}.flatten.sort.uniq
# gives ["A", "AN", "ANA", "ANAN", "ANANA", "B", "BA", "BAN", "BANA", "BANAN", "BANANA", "N", "NA", "NAN", "NANA"]

一种方法是将其转换为字符串,找到所有子字符串并将它们输入到一个集合中,这将删除重复的子字符串。大多数编程语言都应该内置这些代码,所以只需要几行代码。这假设您不会跳过任何数字,即123可以是1、2、3、12、23、123,但不是13Pep(现在已删除)的答案,解决了上述问题。正如他所说,如果这不是你想要的,请澄清这个问题。你需要所有唯一的子字符串吗?构造一个DFA。你所要求的相当于找到一个字符串的所有子字符串——你的字符串恰好是数字。有一个答案在,我已经把这个问题标记为那个问题的重复。@DonRoby,你的链接很有用。可能是“后缀树”是我正在寻找的,但仍然不确定,因为我真的不知道后缀树是什么。。。。。。需要研究一下。希望这会有所帮助---谢谢你的链接。