码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 299. 猜数字游戏

时间:2020-03-07 00:10:29      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:遍历   guess   col   int   为什么   print   ++   除了   位置   

先将两个字符串位置相同且大小相等的数字全都换成字母‘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. 猜数字游戏

标签:遍历   guess   col   int   为什么   print   ++   除了   位置   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!