字符串匹配问题:输入一个字符串,计算其中包含的‘连续’给定的子字符串最长的个数.
2017-12-28 21:58
906 查看
字符串匹配问题:输入一个字符串,计算其中包含的连续给定的子字符串的个数。
例如输入字符串“ EFABCABCABCDABCDD ” , 给定子字符串“ ABC” ,输出是 3 。
函数原型: int countsub( char *str, char *subs ) 。
参数说明: str 保存输入的字符串的首地址, subs 保存需要统计的子字符串的首地址。
返回值:包含的连续子字符串的个数
分析:根据题意我们主要需要解决两个问题:
1.如何去找到原字符串中的子字符串
2.原字符串中“连续”的子字符串个数
例如输入字符串“ EFABCABCABCDABCDD ” , 给定子字符串“ ABC” ,输出是 3 。
函数原型: int countsub( char *str, char *subs ) 。
参数说明: str 保存输入的字符串的首地址, subs 保存需要统计的子字符串的首地址。
返回值:包含的连续子字符串的个数
分析:根据题意我们主要需要解决两个问题:
1.如何去找到原字符串中的子字符串
2.原字符串中“连续”的子字符串个数
#include<stdio.h> int countsub( char *str, char *ss ) { int count = 0, i = 0; //count用来计算子字符串的个数,i用来计算连续的子字符串个数 char *p = str, *q = ss; while( *p != '\0') { q = ss; //每次都要初始化q指针,让它指向ss的第一个元素 if(*p == *q)//判断p,q指针指向的元素是否相等 { while( *p++ == *q++ )//判断相等并且p,q向后移一位 { if( *q == '\0')//当q指向最后'\0'时,就初始化q { q = ss; count++; //并且说明原字符串含有一个子字符串 count+1 } } if( i <= count) //这里是判断所求子字符串个数是否为最多的一个 { i = count; count = 0; } } else //如果p,q指向的元素不同,p向后移一位 p++; } return i; //返回i 的值 } int main() { char s1[1000] = {0}, s2[100] = {0}; gets(s1); //输入原字符串 gets(s2); //输入子字符串 printf("%d\n", countsub( s1, s2 )); return 0; }
相关文章推荐
- 输入一个字符串A,求其中最长的连续递增子串的长度。例如 "hidefef" 中最长的连续递增子串是 "def" ,长度为 3
- 02_对N个长度最长可达到1000的数进行排序、对给定的一个字符串,找出有重复的字符,并给出其位置、输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序
- 对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。
- 给定一个字符串s,请计算输出含有连续两个s作为子串的最短字符串。
- 输入一个字符串,找到其中最长的单词并输出
- 输入一个字符串,将其中连续的数字作为一个整数,一次存放到另一个整型数组,设计一个函数,把指向字符串的指针和指向整数的指针作为函数形参
- 统计数字问题。给定一本书,其中包含n页,计算出书的全部页码中用到了多少个数字0…9。
- 谷歌面试题:给定一个数据流,其中包含无穷尽的搜索关键字(比如,人们在谷歌搜索时不断输入的关键字) 。如何才能从这个无穷尽的流中随机的选取 1000 个关键字?
- ACM457现在给出了一个只包含大小写字母的字符串,不含空格和换行,要求把其中的大写换成小写,小写换成大写,然后输出互换后的字符串。输入 第一行只有一个整数m(m<=10),表示测试数据组数。
- 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式 输入包含一个整
- 一个看似简单却复杂的问题:求两个字符串的 左向右匹配 所有的 最长连续的 公共子字符串( 在每个字符串中先后次序相同的) 序列
- C 输入一个字符串,将其中连续的数字作为一个整数存到一数组中,统计整数个数并输出这些整数
- 输入字符串,内有数字和非字符数组,例如A123x456将其中连续的数字作为一个整数,依次存放到一个数组中,如123放到a[0],456放到a[1],并输出a这些数
- 编写一个密码类,其中包含一个 str 密码字符串私有成员数据,一个“==”运算 符重载成员函数,用于比较用户输入的密码是否正确。并用数据测试该类。
- 统计数字问题。给定一本书,其中包含n页,计算出书的全部页码中用到了多少个数字0…9。
- 字符串操作问题:查找给定字符串中,连续重复且长度最长的第一个子串
- 对于给定的一个字符串,统计其中数字字符出现的次数。输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。
- 输入一个字符串,将其中的连续数字字符组成整数,并放入数组中,在主函数中打印这个数组及数组的个数。
- (转)从给定的文本中,查找其中最长的重复子字符串的问题
- 输入一个字符串,计算出其中想要的子串的数量