子串个数统计

题目描述

编写程序,输入一个主字符串和一个子字符串,统计主字符串中包含的连续给定的子字符串的个数;当子字符串在主字符串中多次连续出现时,输出最大的连续次数。例如,主字符串 “EFABCABCABCDABCDD”,子字符串 “ABC”,输出是3.


#include <stdio.h>

int main()
{
	int flag=0;//f=0表示前面没有字串
	int Max=0;
	int count=0;
	char sa[100]={'\0'};
	char sb[10]={'\0'};
	char *a=sa,*b=sb,*at;
	gets(sa);
	gets(sb);
	while(*a!='\0')
	{
		at=a;
		b=sb;
		if(*b==*at)//子串的第一个字符与主串中的字符相等
		{
			while(*at!='\0')
			{
				if(*at==*b) 
				{
					at++;
					b++;
				}
				else break;
			}

			if(*b=='\0')//主字符串中含有子字符串
			{
				if(flag)//前面由子字符串,计数累加
				count++;
				else
				count=1;//前面没有子字符串,从1开始计数
				if(count > Max) Max=count;
				flag=1;
				a=at;
				continue;
			}
		}
		flag=0;
		a++;
	}
	printf("%d\n",Max);
	return 0;
}//main
posted @ 2019-03-14 22:08  DismalSnail  阅读(1493)  评论(0编辑  收藏  举报