b站黄页推广网站/seo专员岗位职责
输入: 一个源字符,一个子串
输出: 子串的下标
代码
思路: 首次进入字符串,使用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;
}