|
|
1
3
最简单的编码方式是构建一个字典,然后循环遍历每个数组中的每个项。对于每个项目,请执行以下操作: 检查该项是否在字典中,如果是,则将列表添加到数组中。 如果该项不在词典中,请添加它和列表。 正如你所说,这是非生产代码性能并不重要,所以这种方法应该可以很好地工作。 |
|
|
2
3
这是一个解决方案,使用 SuffixTree 用于定位子序列的模块:
处理100个列表,每个列表包含100个项目,大约需要30秒。
旧解决方案: 在Python中(将其保存到“group_patterns.py”文件中):
以下命令:
打印:
这个解决方案效率极低。 |
|
|
3
2
正如其他人提到的,你想要的功能是Intersect。如果你正在使用。NET 3.0考虑使用LINQ的Intersect函数。 看见 the following post for more information 考虑使用LinqPAD进行实验。 |
|
|
4
2
我用了大约10分钟的Perl就破解了下面的程序。它并不完美,它使用了一个全局变量,它只是打印出程序在每个列表中看到的每个元素的计数,但它很好地近似了你想要做的事情,而且非常容易编码。 您真的希望每个数组共享所有元素子集的所有组合吗?如果你愿意,你可以更智能地枚举所有元素,但如果你只想在每个数组中至少存在一次所有元素,你可以在下面的输出中使用Unix命令“grep-v 0”,这将显示所有数组共有的所有元素的交集。你的问题缺少一点细节,所以我无法完美地实现解决你问题的东西。 如果你做的数据分析比编程多,脚本对于从这样的文本数据中提问非常有用。如果你不知道如何用这样的脚本语言编写代码,我会花一两个月的时间阅读如何用Perl、Python或Ruby编写代码。它们对于像这样的一次性黑客攻击来说非常棒,尤其是在你真的不知道自己想要什么的情况下。编写这样一个程序的时间和大脑成本非常低,因此(如果你很快)你可以多次编写和重写,同时仍然探索问题的定义。
程序的输出为:
|
|
|
5
1
看起来您想对数据集使用交集函数。交集会选择两个(或多个)集合中共同的元素。 这种观点的问题在于,集合不能包含多个元素,即每个集合不能包含一个以上的Jim,而且它也不能将一行中的几个元素识别为一种模式,但是你可以修改一个比较函数来进一步查看。 可能有像interview这样的函数在包上工作(有点像集合,但容忍相同的元素)。 这些函数在大多数语言中应该是标准的,或者很容易自己编写。 |
|
6
1
我相信还有一种更优雅的方式,但是。.. 既然这不是生产代码,为什么不直接破解它,将每个数组转换为分隔字符串,然后在每个字符串中搜索您想要的模式呢?也就是
|
|
|
7
1
首先,从计算每个项目开始。 你制作一个临时列表:“Do”=1,“Mi”=2,“So”=3,以此类推。 您可以从临时列表中删除所有匹配=1的值(例如:“Do”)。 临时列表包含非唯一项的列表(将其保存在某处)。 现在,您尝试从临时列表中的一个列表和原始列表中的后续列表中创建两个列表。 “所以”+“拉”=2,“鲍勃”+“所以”=2,以此类推。 删除具有=1的值。 你有至少出现两次的情侣列表(保存在某个地方)。 现在,尝试从临时列表中选取几个项目,并从原始列表中选取以下项目,从而制作一个包含3个项目的列表。 (“Mi”,“Fa”)+“So”=1,(“Mi”,“法”)+”Jim“=1,(”So“,”La“)+”Ti“=2 删除具有=1的值。 您有至少出现两次的3个项目的列表(保存)。 然后你继续这样做,直到临时列表为空。 最后,您将所有已保存的列表合并。 这个算法不是最优的(我认为我们可以用合适的数据结构做得更好),但它很容易实现:) |
|
|
8
0
假设密码由英语字母表中的九个字符(26个字符)组成。如果每个可能的密码都可以在毫秒内测试,那么测试所有可能的密码需要多长时间? |
|
Ben · 统计向量中的单词在字符串中出现的频率 1 年前 |
|
|
bear_525 · 从列中删除中间名和首字母,并保存在单独的列中 1 年前 |
|
|
asdfadf · 为什么具有相同内存值的字符串和整数打印方式不同? 1 年前 |
|
|
user764754 · 防止多行原始字符串文字中出现新行字符 1 年前 |
|
|
Bogaso · 从列表中返回与模式匹配的元素 1 年前 |
|
|
Jasco · 如何使用VBA提取两个相似字符之间的字符串中的单词? 1 年前 |