Q39 LeetCode28 找出字符串中第一个匹配项
KMP暴力搜索
1 class Solution { 2 3 public int strStr(String haystack, String needle) { 4 // 获取 haystack 和 needle 的长度 5 int n = haystack.length(), m = needle.length(); 6 // 将字符串转换为字符数组,方便索引操作 7 char[] s = haystack.toCharArray(), p = needle.toCharArray(); 8 9 // 遍历 haystack 字符串 10 for (int i = 0; i < n-m+1 ; i++) { 11 // 初始化匹配的指针 12 int a = i, b = 0; 13 // 循环检查 needle 是否在当前位置开始匹配 14 while (b < m && s[a] == p[b]) { 15 // 如果当前字符匹配,则移动指针 16 a++; 17 b++; 18 } 19 // 如果 b 等于 m,说明 needle 已经完全匹配,返回当前位置 i 20 if (b == m) return i; 21 } 22 23 // 如果遍历完毕仍未找到匹配的子串,则返回 -1 24 return -1; 25 } 26 }