数据结构 - 字符串的匹配

文章目录

要求

第一部分是自己写的模式匹配但是不符合要求
下面是老师让改之后的。

代码

#include<bits/stdc++.h>
#include<conio.h>
typedef long long ll;
using namespace std;
const int N=1e5;
char a[N];//存储文本 
char b[100][30];//100个单词 
int numword;//单词个数 
ll cnt[100];//每个单词出现的次数 

bool check(char a[],char b[])
{
	int flag=0;
	for(int i = 0;i<strlen(a);i++)
	{
		
		if(a[i]!=b[i]) 
		{
		flag=1;
		break;	
		}
	}
	return (strlen(a)==strlen(b)&&flag==0);
}
int index()//在a中找字符串b,位置存在pos数组中,并且用cnt记录单词出现次数
{
	char c[30];
	int numc=0;
	int lena=strlen(a);
	for(int i=0;i<lena;i++)
	{
		numc=0;
		while(islower(a[i]))
		{
			c[numc++]=a[i];
			i++;	
		}
		c[numc]=0;
		//拿一个单词,比较
		for(int i=0;i<numword;i++)
		{
			if(check(c,b[i])) cnt[i]++;
		}	
	}
	return 0;
}
int Slower(char a[])//大写全变小写 
{
	for(ll i=0;i<strlen(a);i++)
		if(isupper(a[i])) a[i]=a[i]-'A'+'a';
	return 0;
}
		
int main()
{
	
	FILE *fp;
	if((fp=fopen("a.txt","rt"))==NULL)
	{
		printf("不能打开文本\n");
		getch();
		exit(1);
	}
	else  
	{ 
		ll i=0;
		while(feof(fp)==0)
		{
			a[i++]=fgetc(fp);
			if(a[i-1]=='\n') a[i-1]=' ';
		}
		printf("\n成功录入文本\n");
		printf("%s",a);
		printf("\n请输入您要查找的单词个数\n");
		cin>>numword;
		for(int i=0;i<numword;i++) 
		{
			scanf("%s",b[i]);
			Slower(b[i]);
			cnt[i]=0;
		}		
		Slower(a);
		index();		//在a中找字符串b,位置存在next数组中,并且用cnt记录单词出现次数 
		for(int i=0;i<numword;i++)
		{
			printf("%s这个单词出现了%d次\n",b[i],cnt[i]);
		}
	}
	
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洛阳八中我最棒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值