给定一个s字符串和一个n字符串,在s字符串中找出n字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1(需要给出多个测试用例,证明算法的正确性)用C语言实现
时间: 2024-02-16 12:59:48 浏览: 77
去掉重复的字符串及在第一个字符串中删除在第二个字符串中出现的字符
好的,以下是用C语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
int findSubstring(char* s, char* n) {
int s_len = strlen(s);
int n_len = strlen(n);
if (n_len > s_len) {
return -1;
}
for (int i = 0; i <= s_len - n_len; i++) {
int j;
for (j = 0; j < n_len; j++) {
if (s[i+j] != n[j]) {
break;
}
}
if (j == n_len) {
return i;
}
}
return -1;
}
int main() {
char s1[] = "hello world";
char n1[] = "world";
int r1 = findSubstring(s1, n1);
printf("s1: %s\n", s1);
printf("n1: %s\n", n1);
printf("r1: %d\n", r1);
char s2[] = "hello world";
char n2[] = "goodbye";
int r2 = findSubstring(s2, n2);
printf("s2: %s\n", s2);
printf("n2: %s\n", n2);
printf("r2: %d\n", r2);
char s3[] = "hello world";
char n3[] = "o w";
int r3 = findSubstring(s3, n3);
printf("s3: %s\n", s3);
printf("n3: %s\n", n3);
printf("r3: %d\n", r3);
return 0;
}
```
输出结果为:
```
s1: hello world
n1: world
r1: 6
s2: hello world
n2: goodbye
r2: -1
s3: hello world
n3: o w
r3: 4
```
可以看出,代码能够正确地找出给定的字符串中子串的位置,可以通过多个测试用例,证明算法的正确性。
阅读全文