题目来源
题目描述
class Solution {
public:
int strStr(string haystack, string needle) {
}
};
题目解析
本题是经典的字符串单模匹配的模型,因此可以使用字符串匹配算法解决,常见的字符串匹配算法包括暴力匹配、Knuth-Morris-Pratt 算法、Boyer-Moore 算法、Sunday 算法等
暴力模拟
class Solution {
public:
int strStr(string haystack, string needle) {
int n = haystack.size(), m = needle.size();
for (int i = 0; i + m <= n; ++i) {
bool flag = true;
for (int j = 0; j < m; ++j) {
if(haystack[i + j] != needle[j]){
flag = false;
break;
}
}
if(flag){
return i;
}
}
return -1;
}
};
类似题目
题目 | 来源 |
---|---|
leetcode:28. 返回s1在s2中第一个出现的位置 | 模拟 |
leetcode:459. str是否可以由它某个子串重复构成 Repeated Substring Pattern | 将两个 s 连在一起得到newStr,并移除第一个和最后一个字符。如果 newStr中出现了str,那么返回true |
leetcode:686. 重复叠加字符串匹配 Repeated String Match |