欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在一个字符串中查找另一个字符串出现次数(可拆开)

程序员文章站 2023-12-21 16:38:16
...

吉首大学2019年程序设计竞赛(重现赛) G题
链接:https://ac.nowcoder.com/acm/contest/992/G

说能过那是假的

题目描述

这道题你只需要呆萌呆萌的把下面的代码交上去就行了,我书读的多,不会骗你的,我发4。

#include<stdio.h>
#include<string.h>
int main()
{
    char ch[100007];
    int len,ans=0;
    scanf("%s",ch);
    len=strlen(ch);
    for(int i=0;i<len;i++)
    for(int j=i+1;j<len;j++)
        for(int k=j+1;k<len;k++)
            if(ch[i]=='O'&&ch[j]=='R'&&ch[k]=='Z')
                ans++;
    printf("%d\n",ans);
}

输入描述:

输入一行一个仅包含’O’,'R’和’Z’三种字符的字符串s。( 0 < |s| <= 100000 )

输出描述:

一行一个整数表示代码中ans的值。

示例1

输入

ORZORZ

输出

4

改编自硕哥的代码

#include<stdio.h>
#include<string.h>
const int N=1e5;

long long cnt[N+5];
int main(void)
{
	int len;
	long long ans=0; 
	char s[N],word[5]="ORZ";
	scanf("%s",s);
	len=strlen(s);
	for(int i=0;i<len;i++)
	{
		if(i!=0)
			cnt[i]=cnt[i-1];
		if(s[i]==word[0])
			cnt[i]++;
	}
	long long right=0;
	for(int i=len-1;i>=0;i--)
	{
		if(s[i]==word[2])
			right++;
		if(s[i]==word[1])
			ans+=right*cnt[i];
	}
	printf("%lld\n",ans);
	return 0;
}

T81961 这题我猜MDL不会但LS会

题目背景

大佬们准备出一些题来看看到底俱乐部里谁比较厉害,但是那个题我怎么看都是道道防AK,像我徐小白就比较善良,给大家一道签到题,让各位有势头去做下面的题。

题目描述

这只是一道很简单的字符串问题,从给定的一个字符串中寻找一个单词出现的个数,当然这个单词在字符串中是可以被拆开的,但出现字母的顺序必须要正确。举个栗子,在 “mdlldltxdy” 这个字符串中,mdl就出现了四次。(下标123,124,126,156),我们只需要把这个次数4输出就可以了。结果可能过大,对mod 1e9+7即可。(这里的单词可能会出现一些奇奇怪怪的东西,像 <!/这些)

输入输出格式

输入格式:

单组输入,两行,第一行为一行字符串,第二行为要寻找的单词。

输出格式:

一个数字为这个单词在字符串中出现的次数。

输入输出样例

输入样例#1:

mdlldltxdy
mdl

输出样例#1:

4

输入样例#2:

mmmdddllltql
mdl

输出样例#2:

36

说明

字符串长度 3 < n < 10000000 寻找的单词长度为3

改编自硕哥的代码

#include<stdio.h>
#include<string.h>
const int N=1e5;
const int mod=1e9+7;

int cnt[N+5];
int main(void)
{
	int len,ans=0;
	char s[N],word[5];
	scanf("%s",s);
	scanf("%s",word);
	len=strlen(s);
	for(int i=0;i<len;i++)
	{
		if(i!=0)
			cnt[i]=cnt[i-1];
		if(s[i]==word[0])
			cnt[i]++;
	}
	int right=0;
	for(int i=len-1;i>=0;i--)
	{
		if(s[i]==word[2])
			right++;
		if(s[i]==word[1])
			ans+=right*cnt[i];
		ans%=mod;
	}
	printf("%d\n",ans);
	return 0;
}

上一篇:

下一篇: