我是靠谱客的博主 老实小蚂蚁,最近开发中收集的这篇文章主要介绍【练习吧】字符串查找游戏,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

子串查找
时间限制: 5 Sec 内存限制: 256 MB
提交: 63 解决: 23

题目描述
给定一个字符串 A 和一个字符串 B,求 B 在 A 中的出现次数。
A 中不同位置出现的 B 可重叠。

输入
输入共两行,分别是字符串 A 和字符串 B。

输出
输出一个整数,表示 B 在 A 中的出现次数。

样例输入
zyzyzyz
zyz

样例输出
3

提示
1≤A,B 的长度 ≤10的6次方 ,A 、B 仅包含大小写字母。

错误代码:
【原因:①题目并没说只输入一次就可以了;②对字符串函数的不熟练;】

#include<stdio.h>
#include<string.h>
#define maxn 1000010
char a[maxn];
char b[maxn];
int main()
{
    scanf("%s%s",a,b);
    int m=0,n=0,num=0;
    m=strlen(a);
    n=strlen(b);
    for(int i=0;i<m;i++)
    {
        int j=0;
        while(a[i+n-1]==b[n-1])
        {
            if(a[i]!=b[j])
            {
                break;
            }
            else
            {
                i++;
                j++;
            }
            num++;
        }
    }
    printf("%dn",num);
    return 0;
}

用到一个函数:

函数名: strstr
功 能: 查找在串中查找指定字符串的第一次出现后的所有串
用 法: char *strstr(char *str1, char *str2);
程序例:

#include <stdio.h>
#include <string.h>
int main()
{
   char *str1 = "Borland International", *str2 = "nation", *ptr;
   
   ptr = strstr(str1, str2);
   
   printf("The substring is: %s.n", ptr);
   return 0;
}

输出的答案是:
The substring is: national.
注意不是:nation.


AC具体代码如下:

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char a[1000010],b[1000010];
int main()
{
    while(cin>>a>>b)
    {
        int ans=0;
        char *p;
        p=strstr(a,b);
        while(p)
        {
            ans++;
            p++;
            p=strstr(p,b);
        }
        printf("%dn",ans);
    }
    return 0;
}

最后

以上就是老实小蚂蚁为你收集整理的【练习吧】字符串查找游戏的全部内容,希望文章能够帮你解决【练习吧】字符串查找游戏所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部