计算字符串中子串出现的次数。

/*
计算字符串中子串出现的次数。
算法:字符串最长匹配原则,以下是图解:
abcabcabc
abc
循环遍历母串前lenT-lenP;
循环遍历字串,用j指向子串,用k记录每一趟母串开始的位置,若p[j]==t[k]则k、j均后移
若j==子串长度lenP,则找到一个子串,次数++。

*/
#include<stdio.h>
#include<math.h>
#include<malloc.h>
#include<string.h>
main()
{
    char T[100],P[100];
    gets(T);
    gets(P);
    int i,j,k,c=0,lenT,lenP;
    lenT=strlen(T);
    lenP=strlen(P);
    for(i=0;i<=lenT-lenP;i++){
        for(j=0,k=i;j<lenP&&P[j]==T[k];k++,j++);
        if(j==lenP) c++;
    }
    printf("%d\n",c);
}

原文地址:https://www.cnblogs.com/zhaohuan1996/p/12181015.html

时间: 2024-11-05 23:19:58

计算字符串中子串出现的次数。的相关文章

计算字符串中子串出现的次数的问题麻烦帮忙看看

uhv7vn拱寐手硬拘耸<http://weibo.com/VFzp/230927982830634764345344> 1rf49l笔畔帽趟范沽<http://weibo.com/uSIp/230927983121854392700928> ijr22y值摆挂鹤啪傅<http://weibo.com/p20180413p/230927983073935346110464?oL> 831b27口偾殖卜呀驼<http://weibo.com/p20180413p/2

计算字符串中每个字符出现次数

作者:zccst 思想原理:把字符串分割为数组,粒度为每一个字符.循环该数组,用正则替换原字符串对于字符,并计算替换前后字符串长度差值,即为该字符出现的次数. 另外,还可以对重复次数进行排序. 用到的知识点: 1,正则表达式.基本写法,RegExp,replace的用法. 2,数组中的sort.自定义函数排序.(sort默认按字符编码排序) function charCntInString (argument) { var str = argument,result = [],beforeLen

Map集合计算字符串中字符出现的次数

练习: 计算一个字符串中每个字符出现次数 分析: 1.使用Scanner获取用户输入的字符串 2.创建Map集合,key是字符串中的字符,value是字符的个数 3.遍历字符串,获取每一个字符 4.使用获取到的字符,去Map集合判断key是否存在 key存在: 通过字符(key),获取value(字符个数) value++ put(key,value)把新的value存储到Map集合中 key不存在: put(key,1) 5.遍历Map集合,输出结果 代码实现 package demo03;

python技巧 计算字符串中字母出现的次数并取出最大

有一个字符串 "aaddfdfdercfghfyttefsfsfewretr123trefg5624sdfcgvfdgte6435234532",现在需要取出里面出现次数最多的字符 第一种方法-装饰器 class get_max_count_string:    def __init__(self,func):        self.func=func        self.count={}    def __call__(self, args):        for s in

找出一个字符串中最长重复次数的子字符串,并计算其重复次数

原题 找出一个字符串中最长重复次数的子字符串,并计算其重复次数.例如:字符串"abc fghi bc kl abcd lkm abcdefg",并返回"abcd"和2. 我的思路 为了方便表述,我们使用变量src作为原字符串,sub_str作为子字符串. 由于题目要求寻找至少重复2次的最长的子字符串,重点在于最长的子字符串,而不在于重复的最多次数.因此我们可以从长度最长的字符串入手,计算其重复次数.只要重复达到2次,即可返回该字符串. 显然长度最长的子字符串就是原串

求一个字符串中连续出现的次数最多的子串

求一个字符串中连续出现的次数最多的子串.例如字符串“abababc”,最多连续出现的为ab,连续出现三次.要和求一个字符串中的最长重复子串区分开来,还是上面的字符串,那么最长的重复子串为abab.两个题目的解法有些类似,都用到了后缀数组这个数据结构.求一个字符串中连续出现的次数最多的子串,首先生成后缀数组例如上面的字符串为:abababcbababcababcbabcabcbcc可以看出第一个后缀数组和第三个后缀数组的起始都为ab,第5个后缀数组也为ab.可以看出规律来,一个字符串s,如果第一次

算法积累(字符串转换驼峰,判断一个字符串中那个字母出现次数最多,并且出现了几次)

因为算法比较烂,所以想做一下这方面的积累. 尽量能够每天学习一个新算法吧.(不过估计很悬) 好吧,今天第一个是字符串转换驼峰 直接上代码 var str = 'toupper-case'; var arr = str.split('-'); //toupper,case for (var i = 1; i < arr.length; i++) { //把除了第一个数组后面的数组的第一个值设置为大写然后大写字母和去掉第一个字符的剩下的字符进行拼合 arr[i] = arr[i].charAt(0)

【转】Java中字符串中子串的查找共有四种方法(indexof())

原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引. 3.int lastIndexOf(String st

技巧之C#统计字符串中字符出现的次数(转)

方法1.自定义类 class CharNum { private char c; private int num; public char C { get { return c; } } public int Num { get { return num; } set { num = value; } } public CharNum(char ch) { this.c = ch; this.num = 1; } } static void Main(string[] args) { /* */