首页 > 其他 > 详细

LeetCode 299. 猜数字游戏

时间:2020-03-06 23:54:37      阅读:92      评论:0      收藏:0      [点我收藏+]

先将两个字符串位置相同且大小相等的数字全都换成字母‘x’,(为什么要先剔除大小相等的呢,例如例子  01123,11100  )在用哈希表收集secret中每个字母的个数,遍历guess字符串,若发现guess的数字在secret中存在,那么肯定是位置不同的了(因为位置相同且大小相等的已经换成‘x‘了,将B自增以下,并且把哈希表中该字母的个数自减一下),如此一来,便统计除了A和B的数目。         

要学会使用sprintf 等字符串与字母相互转换的函数。

C代码如下:

char * getHint(char * secret, char * guess){
    int a=0;
    int b=0;
    int h[150];
    char *s1=(char*)malloc(sizeof(char)*10);
    char *s2=(char*)malloc(sizeof(char)*10);
    for (int i=0;i<150;i++)
        h[i]=0;
    for(int i=0;guess[i]!=\0;i++)
    {
        if(secret[i]==guess[i])
        {
            a++;
            secret[i]=guess[i]=x; 
        }
    }
    for(int i=0;secret[i]!=\0;i++)
    {
        h[secret[i]]++;
    }
    for(int i=0;guess[i]!=\0;i++)
    {
        if(h[guess[i]]>0&&guess[i]!=x)
        {
            b++;
            h[guess[i]]--;
        }
    }
    sprintf(s1, "%d", a);
    sprintf(s2, "%d", b);
    s1=strcat(s1,"A");
    s2=strcat(s2,"B");
    s1=strcat(s1,s2);
    return s1;
}

 

LeetCode 299. 猜数字游戏

原文:https://www.cnblogs.com/wzmm/p/12431654.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!