给定两个字符串,判断第二个串是不是第一个串的子串,如,abc是123abcdef的子串,不用系统函数
时间: 2024-12-27 08:32:13 浏览: 6
要判断一个字符串是否是另一个字符串的子串,你可以使用滑动窗口(rolling window)或双指针的方法。这里,我会提供一个简单的C语言代码示例来实现这个功能:
```c
#include <stdbool.h>
bool isSubsequence(char str1[], char str2[], int n, int m) {
int i = 0; // 指针i用于str1
for (int j = 0; j < m && i < n; ++j) { // 滑动窗口
if (str1[i] == str2[j]) { // 如果字符匹配
i++; // 移动到下一个字符
}
}
return i == n; // 如果str1遍历完,则str2是str1的子串,返回true;否则不是,返回false
}
// 示例
int main() {
char str1[] = "123abcdef";
char str2[] = "abc";
int n = strlen(str1);
int m = strlen(str2);
if (isSubsequence(str1, str2, n, m)) {
printf("%s 是 %s 的子串\n", str2, str1);
} else {
printf("%s 不是 %s 的子串\n", str2, str1);
}
return 0;
}
```
这段代码定义了一个名为`isSubsequence`的函数,该函数接受两个字符串`str1`和`str2`以及它们的长度作为参数。通过逐个比较这两个字符串中的字符,如果`str2`中的每个字符都恰好出现在`str1`的正确位置,那么`str2`就是`str1`的子串。
阅读全文