一个字符串问题

时间:2011-04-05 18:24:03

标签: c algorithm

我遇到了一个我尚未解决的问题。 我的程序需要像这样工作:

Put some string: Hello World Hello World World World
output: 4

程序获取字符串和子字符串,需要在字符串中找到子字符串并计算字符串中最常见的子字符串。

我写了一些代码但没有成功..

int main()
{
    char string[10];
    int i=0,x=0;
    char find[] = "hello";
    gets(string);
    while(string[i] != 0)
        if(string[i] == find[i]))
             x++;
            printf("%d", x);
    i++;
    return 0;
}

3 个答案:

答案 0 :(得分:0)

我认为你最好使用像

这样的字符串库调用

char * strstr(const char * s1,const char * s2) 这将返回指向s1中第一个字符串s2实例的指针。如果在s1中没有遇到s2,则返回NULL指针。

您可以在此处找到它们的列表: http://www.edcc.edu/faculty/paul.bladek/c_string_functions.htm

答案 1 :(得分:0)

您可能会看到this question的第二个答案,它基本上指出最常见的子字符串将是一个字符串,在您的情况下为“o”。听起来你可能想要单词而不是字符串,在这种情况下,只需将字符串分解为单词并计算它们。

答案 2 :(得分:0)

斐伊川,

以这种方式试试

1)取1个字符串,1个字符串数组和1个计数数组

2)首先扫描字符串。您必须使用fgets,因为获取不安全,甚至LINUX / UNIX文档建议避免由于缓冲区溢出问题而导致它。

3)将字符串分解为单词并将每个唯一的单词存储在字符串数组中。

4)现在从字符串数组中取一个单词并将其与字符串进行比较并计算出现次数。你最好使用像strstr

这样的lib函数

5)然后在计数数组中存储相应的计数

6)在最终计数的最后扫描计数数组中,它将为您提供最大计数和相应的单词。