模式匹配。在字符串s中查找是否存在子串sub,若存在,则返\n回第一个sub在s中的起始位置,不存在则返回-1。\n输入:输入主串s和子串sub。\n输出:输出sub在s中的起始位置,以及出现的次数,两数之
时间: 2023-04-30 09:06:17 浏览: 82
该题目要求判断子串是否存在于字符串s中,如果存在,则返回子串sub在s中的起始位置,否则返回-1。
输入:要求输入主串s和子串sub。
输出:输出子串sub在s中的起始位置,以及出现次数。
解题思路:可以直接使用s.find()函数来判断子串是否存在于s中,并返回其位置。若存在,则使用while循环继续查找,直到子串不存在为止,统计出现次数即可。
参考代码如下:
s = input('输入主串:')
sub = input('输入子串:')
pos = s.find(sub)
count = 0
while pos != -1:
count += 1
print('子串在位置:', pos)
pos = s.find(sub, pos+1) # 从上次位置的下一个字符查找
print('出现次数为:', count)
相关问题
用c语言写代码:输入字符串s和字符串sub,判断字符串s中是否存在sub子串,若存在,将字符 串s中第一个sub子串的所有字符替换成'*',并输出变换后的字符串,否则输出"不存在该 子串!"。
好的,下面是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char s[100], sub[100];
printf("请输入字符串s:");
scanf("%s", s);
printf("请输入子串sub:");
scanf("%s", sub);
char *p = strstr(s, sub); // 在 s 中查找 sub 子串
if (p == NULL) {
printf("不存在该子串!\n");
} else {
int len = strlen(sub);
int pos = p - s; // 得到 sub 子串在 s 中的起始位置
for (int i = pos; i < pos + len; i++) {
s[i] = '*'; // 将 sub 子串中的字符替换成 '*'
}
printf("变换后的字符串为:%s\n", s);
}
return 0;
}
```
代码中用到了 `strstr` 函数来查找子串,如果找到了子串,就可以得到子串在原字符串中的位置,然后用循环将子串中的字符替换成 '*'。如果没有找到子串,则输出提示信息。
在字符串中查找子串个数
好的,我可以帮你解决这个问题。你可以使用字符串的 `count` 方法来查找子串在字符串中出现的次数。例如,假设你要在字符串 `s` 中查找子串 `sub` 出现的次数,你可以这样写:
```
count = s.count('sub')
```
这个方法可以返回子串 `sub` 在字符串 `s` 中出现的次数,如果子串不存在于字符串中,则返回 0。需要注意的是,这个方法是区分大小写的。如果你想要忽略大小写来查找子串,可以先将字符串和子串都转换为小写或大写,再进行查找。