自創字串查詢方法

2021-06-26 12:31:43 字數 781 閱讀 3830

kmp  bm  sunday 方法說白了都要字串比較,這一步都很費時間,有沒有略去或者至少件事這減少這一步驟度呢。

考慮目標字串   str1=「abcd」,我們把他加起來 sum1=『a』+'b'+『c』+'d';

str2="a1b2c3abc2abcd";我們也4個字元加起來,如果不相等後移一位再求和比較,如果相等,再用字串比較,字串不等再後移。

這不是脫褲子放屁嗎。還多一步求和。呵呵,不忙。

第一步  sum2=a+1+b+2,

關鍵第二步,

sum2=sum2-a+c;是不是不用挨個求和了呢,呵呵。如果str1很長,可以節省很多時間哦。關鍵不用乙個字乙個字比較啊。

通過求和比較,可以快速篩選。

可不可以進一步提高。

考慮 sum1a=a+c  sum1b=b+d;

sum2=a+b   如果 sum2==sum1a,比較字串

如果 sum2==sum1b,前移一位比較字串。

都不等            後移兩位求和

sum2=sum2-a+c

提高一倍哦,哦,不是,實際上較低了一點篩選效率,但是還是有提高。

那是不是可以繼續增大間隔呢。理論上是的,但是增加間隔會增加和值比較次數。

如果以 str1實際長度為間隔,就會退化到字串比較,而且增加很多開銷。

如果精通概率學,應該可以計算出乙個比較好的間隔。

原創,給他取個名字 dwx方法,哈哈,名字簡寫

如果把字元通過crc或者其他方法對映到32位,用異或取代求和方法,可以進一步提高篩選效率

自創的C語言列舉字串演算法

本人大一狗,才學完c語言。本來是製作乙個用字典法暴力破解hash值的程式,但是途中出現了問題,就是字典檔案。8位純字母的字典居然要1000多gb,無奈之下只能使用列舉法來迴圈字串了。當時是比賽的一道題目,由於需要每種可能的情況,所以要迴圈出n位所有可能性的純字母字串,就是從aaaaa zzzzz所有...

字串查詢

問題描述 對於乙個給定的 source 字串和乙個 target 字串,你應該在 source 字串中找出 target 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。解決思路 採用雙重for迴圈解決,思路清晰,較容易寫,但效率不高,另外一種方法是用kmp演算法,效率較高。需注意邊界條件,...

字串查詢

題目 對於乙個給定的 source 字串和乙個 target 字串,你應該在 source 字串中找出 target 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。思路 很簡單,看 就能懂 python處理字元真的優勢很大 主要是注意一些細節 class solution param so...