字符串匹配算法主要是两类,最基本的暴力解法,也叫做朴素算法,另一种是KMP算法。本篇给出两种算法的最简单化的写法,便于面试时记忆和书写,当然重点还是理解其算法思想。
朴素匹配算法
被搜索的字符串称为主串,待搜索的字符串称为模式串。朴素模式匹配算法的基本思想:
对主串的每一个字符作为子串开头,与模式串进行匹配。对主串做大循环,每个字符开头做模式串长度的小循环,直到匹配成功或全部遍历完成为止。
Java 实现算法如下:
/**
* 朴素匹配算法,找模式串t,在主串s中首次出现的位置
*
* @param s 主串
* @param t 模式串
* @return 首次匹配位置 如果不存在返回-1
*/
public int simple(String s, String t) {
char[] S = s.toCharArray();
char[] T = t.toCharArray();
int lenS = S.length;
int lenT = T.length;
int i, j;//i遍历S,j遍历T
for (i = 0; i <= lenS - lenT; i++) {
for (j = 0; j < lenT; j++)