编写C语言代码:给定一个字符串,输入一个字符串后能否在其所有子序列中找到对应的字符串 例如:给定字符串“dxyyds",输入“abcdxyyds”,输出“Yes"
时间: 2024-10-19 22:04:47 浏览: 39
c语言面试题之哈希表字符串中的第一个唯一字符.zip
编写一个简单的C语言程序来判断给定字符串是否能作为其自身的一个子序列可以采用滑动窗口的思想。以下是相应的函数实现:
```c
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
bool isSubsequence(char *str1, char *str2) {
int i = 0; // str1的指针
for (int j = 0; str2[j] != '\0'; ++j) { // str2的遍历
if (i < strlen(str1) && str1[i] == str2[j]) {
i++; // 如果匹配,移动str1的指针
}
}
return i == strlen(str1); // 返回str1的所有字符是否都被str2覆盖
}
int main() {
char str1[] = "dxyyds";
char str2[] = "abcdxyyds";
bool result = isSubsequence(str1, str2);
if (result) {
printf("Yes\n");
} else {
printf("No\n");
}
return 0;
}
```
这个程序首先定义了一个名为`isSubsequence`的函数,接受两个字符串作为参数。它通过比较`str1`的每个字符与`str2`中的字符,如果找到相同的字符就将`str1`的指针向前移动一位。当`str2`遍历完成后,如果`str1`的长度等于已经移动过的字符数,说明`str1`是`str2`的一个子序列;否则不是。
在`main`函数中,我们调用该函数并将结果打印出来。
阅读全文