标题:腾讯的一道面试题??欢迎讨论
只看楼主
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
得分:0 
题目,规定:字符的个数是相同的! 这是定死的了!
如果字符个数不一样!这个方法是一点用都没有,我想某些方法也只在局限中使用才能发挥自己的效果来

[ 本帖最后由 missiyou 于 2011-1-14 14:40 编辑 ]
2011-01-14 14:39
马后炮
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:156
专家分:560
注 册:2010-12-17
得分:0 
那反例超简单:
"ac", "bb"

樱之雪,晓之车
2011-01-14 14:40
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
得分:0 
对!无语
2011-01-14 14:41
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
以下是引用missiyou在2011-1-14 14:39:13的发言:

题目,规定:字符的个数是相同的! 这是定死的了!
如果字符个数不一样!这个方法是一点用都没有,我想某些方法也只在局限中使用才能发挥自己的效果来
你上次发的那个流程图工具能再共享一次吗 ??

[ 本帖最后由 BlueGuy 于 2011-1-14 14:56 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2011-01-14 14:45
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
得分:0 
buf[(int)*str1 % strlen(str1)] ++;
 buf[(int)*str2 % strlen(str2)]++;

 strcmp(buf, buf1)

这个方法有编译没过。但思想我想是对的

[ 本帖最后由 missiyou 于 2011-1-14 15:24 编辑 ]
2011-01-14 15:08
马后炮
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:156
专家分:560
注 册:2010-12-17
得分:0 
以下是引用missiyou在2011-1-14 15:08:35的发言:

buf[(int)*str1 % strlen(str1)] ++;  
 buf[(int)*str2 % strlen(str2)]++;
 
 strcmp(buf, buf1)
 
这个方法有编译没过。但思想我想是对的
你还是看我在二楼给出的做法吧,你这样虽然有那个思想,但实际算法是不对的(我不考虑你的语法,只看你算法思路)

樱之雪,晓之车
2011-01-14 15:27
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
得分:0 
bool Is_Mach(char *str1,char *str2)
{
    int length1, length2;
    length1 = length2 = 0;
    if(str1 == NULL || str2 == NULL)
        return false;

    if(strlen(str1) == strlen(str2))
    {
        while(*str1 != '\0')
        {
            length1 +=(int)*str1 % strlen(str1);
            length2 +=(int)*str2 % strlen(str1);
            ++str1;
            ++str2;
        }
        if(length1 == length2)
            return true;
    }
    return false;
}
2011-01-14 15:31
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
得分:0 
在看,求解
2011-01-14 15:31
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
得分:0 
现在感觉这个算法有点强了!
2011-01-14 15:36
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
得分:0 
bool Is_Mach(char *str1,char *str2)
{
    int length1, length2;
    length1 = length2 =  0;

    if(str1 == NULL || str2 == NULL)
        return false;
    if(strlen(str1) == strlen(str2))
    {
        int len = strlen(str1);
        if (str1[len -1] == str2[len -1])
        {
            len = len -1;
        }
        while(*str1 != '\0')
        {
            if(*str1 != *str2)
            {   
                length2 += *str2 % len;
                length1 += *str1 % len;
            }
            ++str1;
            ++str2;
        }
        if(length1 == length2)
            return true;
    }
    return false;
}
传最后一次修改! 总之就是针对出现问题去改进!
小小测试一下,没出问题!在贴上来,请求数据验证!
2011-01-14 17:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-330905-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.306500 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved