#include
#define maxsize 100
typedef
struct
sqstring;
void
strassign
(sqstring &s,
char cstr)
//初始化串
s.length=i;
}void
destroystr
(sqstring &s)
//釋放串
void
strcopy
(sqstring &s,sqstring t)
//串copy
s.length=t.length;
}bool strequal
(sqstring s,sqstring t)
//判斷串是否相等
else
for(i=
0;ireturn same;
}int
strlength
(sqstring s)
//串的長度
sqstring concat
(sqstring s,sqstring t)
//串的連線
for(i=
0;i)//copy到str
return str;
}sqstring substr
(sqstring s,
int i,
int j)
//求子串
//引數不正確時返回null
for(k=i-
1;k1;k++
)//複製str
str.length=j;
return str;
} sqstring insstr
(sqstring s1,
int i,sqstring s2)
//插入子串
sqstring delstr
(sqstring s,
int i,
int j)
//delete
for(k=
0;k1;k++
)//複製str
for(k=i+j-
1;k)//複製str
str.length=s.length-j;
return str;
}sqstring repstr
(sqstring s,
int i,
int j,sqstring t)
//子串替換
for(k=
0;k)for
(k=i+j-
1;k) str.length=s.length-j+t.length;
return str;
}void
dispstr
(sqstring s)
//輸出串
printf
("\n");
}}void
getnext
(sqstring t,
int next)
//由模式串t求出next值
else}}
intkmpindex
(sqstring s,sqstring t)
//kmp演算法
else j=next[j]
;//i不變,j後退}if
(j>=t.length)
return
(i-t.length)
;//返回匹配模式串的首字元下標
else
return(-
1);//返回不匹配標誌
}int
main()
字串匹配之KMP演算法
以前零零散散做了些kmp的題目,一直也沒找出時間整理,這一段又開始研究字串了,就順便把kmp整理了一下。廢話不說了,我們直接入題。說到kmp,首先應該知道,它是一種字串查詢演算法,因為是由乙個姓k,乙個姓m和乙個姓p的人聯合發表的,所以就叫kmp演算法了。kmp演算法是一種線性時間的的字串匹配演算法...
演算法 字串匹配之KMP
說人話就是 比如有乙個字串 bbc abcdab abcdabcdabde 我想知道,裡面是否包含另乙個字串 abcdabd 許多演算法可以完成這個任務,kmp演算法是最常用的之一。首先對於上面的 比如 我們首先要針對搜尋詞 abcdabd 算出一張 部分匹配表 接下來就很簡單了,將字串和搜尋詞都從...
字串匹配之KMP演算法
問題定義 字串匹配即是在所有文字t中,找出模式p的所有出現。字串匹配常用的演算法有 樸素演算法 rabin karp演算法 有限自動機演算法 kmp演算法 所有演算法中,算kmp演算法效率最高。也較為難理解。作者曾經認真看了3遍嚴蔚敏的 資料結構 遺憾的是沒有看懂,搞得我一度懷疑自己的智商很低。今天...