1、创建串s。 2、求从主串s的下标pos起,子串t第一次出现的位置,成功返回位置序号,不成功返回-1 用C语言写
时间: 2024-12-17 21:50:11 浏览: 6
在C语言中,你可以使用滑动窗口(rolling window)的思想来解决这个问题。这里有一个简单的实现示例:
```c
#include <stdio.h>
#include <string.h>
int findSubstring(char s[], char t[], int pos) {
if (strlen(t) > strlen(s) - pos) { // 如果子串长度大于剩余字符串,则不可能找到
return -1;
}
int index = 0; // 子串t的起始索引
for (int i = pos; i <= strlen(s) - strlen(t); ++i) { // 滑动窗口从pos开始
bool match = 1; // 初始化匹配状态为true
// 检查当前窗口内的字符是否与子串t相等
for (int j = 0; j < strlen(t); ++j) {
if (s[i + j] != t[j]) {
match = 0; // 匹配失败,跳出循环
break;
}
}
if (match) { // 找到匹配,返回起始索引
return i;
}
}
// 扫描结束后未找到匹配,返回-1
return -1;
}
int main() {
char s[] = "Hello, how are you? This is a test.";
char t[] = "is";
int pos = 7; // 搜索的起始位置
int result = findSubstring(s, t, pos);
printf("Substring '%s' first appears at position %d.\n", t, result);
return 0;
}
```
这个函数会在`findSubstring`中查找从`s[pos:]`开始的子串`t`首次出现的位置。如果找不到,会返回-1。
阅读全文