首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从随机数中收集唯一数

从随机数中收集唯一数
EN

Stack Overflow用户
提问于 2014-08-30 14:02:00
回答 1查看 83关注 0票数 2

我在谷歌找不到任何直截了当的答案。

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

例如,x= 6487657876579876867656768476876876117681761871687268726

我想有所有可能的唯一数字/数字,我可以从x。我不是在寻找代码。我正在寻找一种“建立的算法”来完成这类工作或类似的工作。任何论文/期刊/书籍链接都是有用的。

编辑:--如果我要求从很多项中搜索数字/项的“算法”,答案是: BFS、DFS、Tree、Graph等。同样,我的问题不是编码,甚至不是任何特定的编程语言,而是寻找(如果有的话)从随机数中收集唯一数字的算法。正如"Muckle_ewe“在他的评论中所说的那样,123可能是1,2,3,12,23,123,但不是13 -this,这正是我的算法要求。

请不要给我看密码。我期待一个引用/名称/链接到任何建立的算法,做这种简单的工作或类似的工作。当然,任何人都可以为这个简单的工作建立一个算法,甚至是我。但我正在寻找一个公认的算法,我可以作为参考。

第二编辑:稍微修改了一下需求,实际上我不需要所有我认为我会用到的子字符串。我发现后缀树很适合查找所有的子字符串。所以这和我要找的东西不完全一样,但它是一个很接近的。嗯,编辑Muckle_ewe的注释,123可以是1,2,3,12,23,但不是13,123 -so i只需要从长随机数(x)中得到1位或2位数字,这就是我的算法要求,而不是旧的算法。

-谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-08-30 14:39:35

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

代码语言:javascript
复制
x = "6487657876579876867656768476876876117681761871687268726"
x.split("").uniq.join #gives 64875912

现在,我可以做得更详细,绕过Ruby所包含的方法,但是有什么意义呢?开方向盘?以为我比露比德夫好吗?如果我想要的话,我可以查找他们用来组成Ruby方法的C代码。

OP编辑后的编辑

嗯,经过你的编辑,我终于看到你的本意了。参见此Quora问题,有关于后缀树移动算法的解释。

我只是一个简单的程序员,所以我喜欢保持简单,所以一个简单的算法是:从第一个字母开始,继续到最后一个字母,存储该字母的所有后缀,最后排序存储的后缀并删除重复项。我想有更快的算法,而且我没有这个名字,我自己编的。在Ruby中,这是这样实现的,我使用一个短字符串来保存它.呃..。很简单。这两个映射在数组中生成数组,因此在排序和删除重复项之前,我首先将它们夷为平地。

代码语言:javascript
复制
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"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25583177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档