读书人

这个程序如何写。没思路

发布时间: 2012-03-09 16:54:57 作者: rapoo

这个程序怎么写。。没思路。
输入一段字符串,统计其中出现最多的字符串。比如输入 aaabbbcccddd。那么出现最多的是a、b、c、d、aa、bb...等

木有思路。。

[解决办法]
你是用C写还是用C++呢?如果C的话就用字符串来表示,遇到没有的字符串就新建字符串来表示,并将其计数器置为1,如果遇到已经存在的字符串就往其计数器上++,。到最后在计数器中找最大的值。如果用C++的话可以用STL。
[解决办法]
你字符串出现最多 就是 你字符串里面的子串也出现的最多 最终也就是一个一个的字符出现的最多 你要是不改题目的话 直接遍历单个字符就能求解 如果是加上一个条件 统计其中出现最多的字符串并且此字符串最长 用LS的吧
[解决办法]
需要统计的子串有2^n - 1个
当然到后面有些也许不必统计
[解决办法]
我是个菜鸟,具体写出来可能会有很多错误,给个我自己的想法吧,可能会比较浪费时间!

首先确定字符串的长度N,然后从1开始,比如 abcabaac ,N=8,先设定字符串里只有1个字符,然后就有8个,分别是 a,b,c,a,b,a,a,c然后计算它们出现的次数,之后设字符串里又2个字符,分别是ab,bc,ca,ab,ba,aa,ac,然后设字符串有3个字符,以此类推......

以上是个人想法,不知道能不能行,希望帮到你~~
[解决办法]
写一个count_substr()函数, 用来统计一个字符串中子字符串的数量, 其原型或许类似如下:
int count_substr(char *goal, int len_g, char *s, int len_s); 举个例子, count_substr("ab", 2, "ababc", 4) 就等于2,
然后再写一个 结构体, 如下:

C/C++ code
struct string {    char *head;    int length;}typedef string String;
[解决办法]
仅供参考
C/C++ code
#include <stdio.h>#include <string.h>char *a="abcde";int L,i,j,k;void main() {    L=strlen(a);    for (i=1;i<=L;i++) {        for (j=0;j<=L-i;j++) {            for (k=j;k<j+i;k++) {                printf("%c",a[k]);            }            printf("\n");        }    }} 

读书人网 >C语言

热点推荐