免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: g9527j
打印 上一主题 下一主题

一個有難度的題目 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-04-07 09:46 |只看该作者
给一个的思路,大家对我这个思路在速度上,效率上给予一些指点,我现在就是在速度,效率上面极其欠缺。
int count = 0;
先编写一个判断是否为子串的函数
substring(char *src,char *des);

然后设一个变量接收母串,
char *temp = src ;
之后循环,while(src != NULL && *src != '\0')
调用函数找到第一个子串后,count += 1; 再把剩余部分当成母串继续调用。


其实和 9 楼的想法应该是一样的!呼呼!

论坛徽章:
0
12 [报告]
发表于 2006-04-07 10:00 |只看该作者
原帖由 soul_of_moon 于 2006-4-7 07:53 发表

我又被骗了,这个有什么难度?一个循环加一个匹配函数就搞定了




我是来看贴的,刚看到大哥的贴,很有内容,请问“匹配函数”是怎么一回事呢?

论坛徽章:
0
13 [报告]
发表于 2006-04-07 10:11 |只看该作者
原帖由 hanbing5299 于 2006-4-7 09:46 发表
给一个的思路,大家对我这个思路在速度上,效率上给予一些指点,我现在就是在速度,效率上面极其欠缺。
int count = 0;
先编写一个判断是否为子串的函数
substring(char *src,char *des);

然后设一个变量接 ...

有是很清楚是什么意思:

    如母串:aabbccaabbccaabbcc
        子串:ab;
   通过函数判断是它们的子串
    之后又怎么来计算这个个数呢?

论坛徽章:
0
14 [报告]
发表于 2006-04-07 10:12 |只看该作者
算了,我还是贴出来吧,省得再讨论下去,另外批评一下LZ不劳而获的态度
#include <stdio.h>

int substring(const char *src,char *des);
int isSubString(char *src,char *des);

int main()
{
        char aSrc[]="abcdabcdabccd";
        char aDes[]="bcde";
        printf("%d\n",substring(aSrc,aDes));
        return 0;
}

int substring(const char *src,char *des)
{
        int iCount=0;
        char *pcTmp=(char *)src;
        while('\0'!=*pcTmp)
        {
                if(0==isSubString(pcTmp,des))
                {
                        iCount++;
                }
                pcTmp++;
        }
        return iCount;
}

int isSubString(char *src,char *des)
{
        while('\0'!=*des)
        {
                if(*src!=*des)
                {
                        return -1;
                }
                src++;
                des++;
        }
        return 0;
}

论坛徽章:
0
15 [报告]
发表于 2006-04-07 10:15 |只看该作者
楼上的把他宠坏了哦

论坛徽章:
0
16 [报告]
发表于 2006-04-07 10:58 |只看该作者
int substing(const char* dec,const char* src)
{  
        int i=0,j=0,k=0,l=0,conunt=0;
                if((dec==NULL)||(src==NULL)||(*dec=='\0')&&(*src=='\0'))
                               return -1;
        char* s_dec;
        char* s_src;
        strcpy(s_dec,dec);
        strcpy(s_src,src);
        i++;
        j++;
        s_dec='\0';
        s_src[j]='\0';
                i=0;
                j=0;
                while(s_dec)i++;
                while(s_src)j++;
        if(i<j)return -1;
        for(;s_dec[k];k++)
        {
                for(l=0;s_src[l];l++,k++)
                {
                        if(s_dec[k]==s_src[l])
                                continue;
                        if(l==j)
                                count++;
                }
        }
        return count;
}       
请指点

[ 本帖最后由 wenyon 于 2006-4-7 12:45 编辑 ]

论坛徽章:
0
17 [报告]
发表于 2006-04-07 11:33 |只看该作者
楼上的好像有点问题吧?

论坛徽章:
0
18 [报告]
发表于 2006-04-07 11:56 |只看该作者
i=sizeof(dec);
      j=sizeof(src);
这算出来的数值可不是你想要的

论坛徽章:
1
15-16赛季CBA联赛之四川
日期:2016-02-15 17:12:32
19 [报告]
发表于 2006-04-07 12:16 |只看该作者
还有更高效的kmp算法!

论坛徽章:
0
20 [报告]
发表于 2006-04-07 12:46 |只看该作者
原帖由 zh_manyu 于 2006-4-7 11:56 发表
i=sizeof(dec);
      j=sizeof(src);
这算出来的数值可不是你想要的



确实   多谢提醒
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP