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 }

 

posted @ 2024-06-18 22:10  清川1  阅读(9)  评论(0)    收藏  举报