找出字符串第一个匹配项的下标
找出字符串第一个匹配项的下标
题目描述:
题解思路:
图上所示,利用字符滑动,如果匹配就字符开始移动;如果不匹配成功,则停止移动,并回到字符串刚开始匹配的字符下标前一个,为下一次进行字符匹配做好准备,并将子字符串下标清理0
代码
int strStr(char* haystack, char* needle) {
int i = 0;int j = 0;int index = 0;for (i = 0, j = 0; haystack[i] != '\0' && needle[j] != '\0';){if (haystack[i] == needle[j]){if (j == 0) {index = i;}j++;i++;}else{//回退到开始状态i = i - j + 1;j = 0;}}if (needle[j] != '\0') {return -1;}else {return index;}
}
官方题解
int strStr(char* haystack, char* needle) {int n = strlen(haystack), m = strlen(needle);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;
}