C语言--寻找子串的下标
输入: 一个源字符,一个子串
输出: 子串的下标
代码
思路: 首次进入字符串,使用startIndex记录子串起始位置。
cnt会记录相同的字符数,当cnt等于子串长度,说明是原字符串的子串。
int finSubString(char *str, char *substr) {
int cnt = 0;
int startIndex = -1;
int inStr = 0;
int len1 = strlen(str);
int len2 = strlen(substr);
if (len1 < len2) {
return -1;
}
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] == substr[cnt]) {
cnt++;
if (!inStr) {
inStr = 1;
startIndex = i;
}
if (cnt == len2) {
return startIndex;
}
} else {
startIndex = -1;
inStr = 0;
cnt = 0;
}
}
return -1;
}
运行
int main() {
char str[] = "hello aaa ccc bbb d2222";
char substr[]="ccc";
char substr2[]="ccc1";
int index = finSubString(str, substr);
int index2 = finSubString(str, substr2);
printf("%d\n", index);
printf("%d\n", index2);
return 0;
}