给定连个字符串a和 b,求出b在a中第一次出现的位置。如果b没有在a中出现过,则输出-1。c++
时间: 2024-05-05 22:18:43 浏览: 168
C语言中查找字符在字符串中出现的位置的方法
好的,这个问题是关于字符串匹配的,可以用暴力匹配或KMP算法来实现。以下是暴力匹配的代码实现:
```
int strStr(string haystack, string needle) {
if (needle.empty()) return 0;
for (int i = 0; i < haystack.size(); i++) {
if (haystack[i] == needle[0]) {
int j = 1;
while (j < needle.size() && haystack[i+j] == needle[j]) {
j++;
}
if (j == needle.size()) return i;
}
}
return -1;
}
```
如果使用KMP算法,可以在匹配字符串时利用已经匹配成功的信息来跳过不必要的比较,从而提高匹配效率。
阅读全文