C++串的模式匹配:设s、t为两个字符串,判断t是否为s的子串。如果是,输出子串所在位置(第一个字符),否则输出-1。
时间: 2023-11-20 12:06:31 浏览: 92
可以使用双重循环和字符串的比较操作来实现字符串的模式匹配。具体的实现过程如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char s[100], t[100];
int s_len, t_len, i, j, k;
printf("请输入字符串 s:");
scanf("%s", s);
printf("请输入字符串 t:");
scanf("%s", t);
s_len = strlen(s);
t_len = strlen(t);
for (i = 0; i <= s_len - t_len; i++) {
for (j = 0, k = i; j < t_len && s[k] == t[j]; j++, k++);
if (j == t_len) {
printf("子串在字符串 s 中的位置为 %d\n", i);
return 0;
}
}
printf("字符串 t 不是字符串 s 的子串\n");
return 0;
}
```
该程序中,首先输入两个字符串 s 和 t,并计算它们的长度。然后,通过双重循环来遍历字符串 s 的所有可能子串,并与字符串 t 进行比较。如果找到了一个相等的子串,就输出该子串在字符串 s 中的起始位置,并退出程序。如果遍历完了字符串 s 但没有找到相等的子串,就输出字符串 t 不是字符串 s 的子串。
阅读全文