![]() |
1
1
你不清楚的一个方面是:
假设您想要两个,伪代码:
由于集合查找应该是O(1),所以总的复杂性是O(2*filelist.length) 如果set1中的文件名是唯一的,则可以计算出路径名输出的数目,并在达到set1.length时尽早退出。 在最长的集合中单步执行似乎是违反直觉的,但它的查找速度也是最慢的,因此必须最小化对filelist的操作。 更新:这里是完整的工作C++代码(包括和使用)
|
![]() |
2
1
简单:迭代
此外,这还处理了您提到的“双精度”问题。 |
![]() |
3
0
只需使用助手哈希表获取set1.size()+filelist.size()的运行时 伪代码:
或者类似的事情。在boost(或tr1)中提供无序_集,在o(1)中提供插入/查找操作。 |
![]() |
4
0
您期望的结果看起来像是在文件列表中搜索与set1和set2中的行匹配的后缀是无关紧要的。 set2的大小决定了实际匹配的方向。如果它相当小,您可以将其转换为regex,并添加regex锚以匹配字符串结尾或预处理文件列表(只提取文件名,同时保留结果的原始字符串)。您还可以反转两个列表中的字符串,使其实际上成为前缀匹配。 如果set2很大,那么您需要从中构建哈希表,在这种情况下,您需要预处理文件列表以提取文件名为“keys”,您将尝试在哈希表中“find”。如果这是一个潜在的问题,请确保处理大小写敏感问题(如将所有键转换为大写)。有了它,只需打印出文件列表中的每一行,它的键就出现在从集合1构建的哈希表中。 如果set 2确实有一些意义(在这种情况下,您的预期结果是错误的),那么这是第二次传递来筛选第一次传递的结果-使用第二个过滤器的另一个哈希表。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |