例如:字符串"league of legend"包含了"end",所以"end"是"league of legend"的子串。 同理,"leg"也是"league of legend"的子串。 但"lend"不是"league of legend"的子串,虽然字母l、e、n、d均出现在"league of legend"中。 要求:输入两个字符串S1和S2,S1和S2的长度大于0且小于100,统计S2在S1中出现的次数。 例如,输入: blah/blah/blah/ blah/blah 输出: 1
时间: 2023-07-02 11:16:32 浏览: 174
好的,根据您的要求,我能给出以下 Python 代码实现:
```
S1 = input().strip()
S2 = input().strip()
count = 0
for i in range(len(S1) - len(S2) + 1):
if S1[i:i+len(S2)] == S2:
count += 1
print(count)
```
具体实现思路是,在 S1 中遍历每一个长度为 S2 的子串,依次比较是否与 S2 相等,如果相等则计数器加一,最后输出结果即可。
相关问题
C语言例如:字符串"league of legend"包含了"end",所以"end"是"league of legend"的子串。 同理,"leg"也是"league of legend"的子串。 但"lend"不是"league of legend"的子串,虽然字母l、e、n、d均出现在"league of legend"中。 要求:输入两个字符串S1和S2,S1和S2的长度大于0且小于100,统计S2在S1中出现的次数。 例如,输入: blah/blah/blah/ blah/blah 输出: 1
好的,以下是同样功能的 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char S1[MAX_LEN+1], S2[MAX_LEN+1];
int len1, len2, count = 0;
// 读入 S1 和 S2
scanf("%s%s", S1, S2);
len1 = strlen(S1);
len2 = strlen(S2);
// 在 S1 中查找 S2
for (int i = 0; i <= len1 - len2; i++) {
if (strncmp(S1 + i, S2, len2) == 0) {
count++;
}
}
// 输出结果
printf("%d\n", count);
return 0;
}
```
具体实现思路与 Python 代码类似,同样是在 S1 中遍历每一个长度为 S2 的子串,依次比较是否与 S2 相等,如果相等则计数器加一。需要注意的是,在 C 语言中需要使用 `strncmp` 函数进行字符串比较,以避免出现字符串越界的问题。
阅读全文