更快/更高效地生成从文件读取的排列?

时间:2012-01-09 15:42:53

标签: file generator permutation matching

我正在编写一个程序,针对给定的字符串测试生成的字符串,看它们是否匹配,而不知道字符串或它的长度。输入字符串也无法操作。到目前为止,我的过程是生成字符集排列的强力方法:

对长度(1 +)

置换'abc ... xyz'

直到字符串匹配。

但是,我想知道生成排列是更好还是更快,将它们保存到文件中,然后在匹配期间从文件中读取行?当然,事先生成文件。

3 个答案:

答案 0 :(得分:0)

使用string matching algorithm Aho-Corasick.

更快更有效率

答案 1 :(得分:0)

概率不是,因为在这种情况下,您将受到磁盘IO绑定,但生成的代码的一小部分将从缓存运行。代码最多需要大约10次操作来生成新的排列,并且比从磁盘读取更快

答案 2 :(得分:0)

暴力强迫排列听起来很糟糕(表现明智)。你能举一些例子,比较一下吗? String听起来好像允许重复(foo),但set没有那么多。

为了更快地匹配“堆栈”和“大头钉”,你可以对两者进行排序,并检查它们是否相同,哪些甚至适用于字符串,更频繁地包含一些字符:

 stack => ackst 
 tacks => ackst 

 hello => ehllo
 oloeh => ehloo 

对于集合,您可以使用正则表达式:

 "tacks".matches ("[stack]+") 

如果大小匹配,但它们将无法匹配重复字符的字符串。