字串匹配暴力演算法

2022-09-10 18:00:17 字數 1831 閱讀 5389

#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}}

intbf

(sqstring s,sqstring t)

else

//主串、子串指標回溯重新開始下一次匹配}if

(j>=t.length)

return

(i-t.length)

;//返回匹配的第乙個字元的下標

else

return(-

1);//模式匹配不成功

}int

main()

字串暴力匹配演算法

暴力匹配演算法 如果用暴力匹配的思路,並假設現在 str1 匹配到 i位置,子串 str2 匹配到 j 位置,則有 1 如果當前字元匹配成功 即 str1 i str2 j 則i j 繼續匹配下乙個字元 2 如果失配 即 str1 i str2 j 令i i j 1 j 0 相當於每次匹配失敗時,i...

演算法 字串匹配演算法 暴力匹配演算法 KMP演算法

如果當前字元匹配成功,即 str1 i str2 j 則 i j 繼續匹配下乙個字元 如果當前字元匹配失敗,則 i i j 1 j 0 也就是每次匹配失敗時,i回溯,j被置為0 public static void main string args 暴力匹配演算法 public static int...

字串匹配 暴力搜尋演算法

主要特徵 1 沒有預處理階段 2 需要常量額外空間 3 通常需要模式串視窗向右移動乙個位置 4 可以按照任意順序進行比較 5 搜尋的時間複雜度為 o mn 6 文字字元期望比較次數 2n演算法描述 暴力搜尋演算法由文字串中從0到 n m所有位置的比較組成,無論是否從模式串的起始位置開始,每次匹配過後...