- 論壇徽章:
- 0
|
用Rabin-Karp算法,但是那個(gè)公式可以改改,原理是一樣的,時(shí)間復(fù)雜度是O(N),也就是線性掃描的時(shí)間,空間復(fù)雜度嘛,O(1),常數(shù)附加空間。
順手寫了一個(gè)僅供參考,沒有仔細(xì)驗(yàn)過,但是大概意思是那樣吧,每次都獲取三個(gè)char構(gòu)成的12位整數(shù)值,若等于1就可以得到第一個(gè)滿足條件的了,沒找到返回-1。
int find001(char* str,int len)
{
if (len<3) return -1;
int i,s=(str[0]<<4)+str[1];
for (i=2;i<len;i++)
{
s=((s&(0xffff))<<4)+str[i];
if (s==1) break;
}
if (i==len) return -1;
else return i-2;
} |
|
|