我正在寫一個程序,測試一個給定的字符串生成的字符串,看看它們是否匹配,不知道字符串或它的長度。輸入字符串也不能被操縱。我的過程至今是生成的字符集排列的蠻力方法:將長度(1+)更快更有效地生成文件讀取排列?
置換「ABC ... XYZ」,直到字符串匹配。
但是,我想知道生成這些排列會更好還是更快,將它們保存到文件中,然後在匹配過程中從文件中讀取行?當然,事先生成文件。
我正在寫一個程序,測試一個給定的字符串生成的字符串,看看它們是否匹配,不知道字符串或它的長度。輸入字符串也不能被操縱。我的過程至今是生成的字符集排列的蠻力方法:將長度(1+)更快更有效地生成文件讀取排列?
置換「ABC ... XYZ」,直到字符串匹配。
但是,我想知道生成這些排列會更好還是更快,將它們保存到文件中,然後在匹配過程中從文件中讀取行?當然,事先生成文件。
概率不是,因爲在這種情況下,你會爲磁盤IO,但生成的代碼小部分會從緩存中運行。代碼最多需要10次操作才能生成新的置換,並且速度比從磁盤讀取要快得多
蠻力強制置換聽起來很糟糕(性能明智)。你可以舉一些例子,匹配什麼? String
聽起來好像重複會被允許(foo
),但set
沒有那麼多。
要使用「圖釘」更迅速,你可以排序都匹配「堆棧」,並檢查它們是否是相同的,這甚至對字符串的工作,更常含一些字符:
stack => ackst
tacks => ackst
hello => ehllo
oloeh => ehloo
對於您可以使用正則表達式:
"tacks".matches ("[stack]+")
如果大小匹配,但它們將無法匹配重複字符的字符串。
這是一個字符串,不是一個集合,對此感到抱歉。但是,我只是對輸入字符串進行檢查,沒有對允許的輸入字符串進行操作。 – Aaron 2012-01-23 14:10:04
甚至沒有輸入字符串的副本?你應該在問題中提到這一點。 – 2012-01-23 15:39:24
謝謝,這回答我的問題! – Aaron 2012-01-09 16:07:54