LeetCode 299. 猜数字游戏

Posted 规格严格

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 299. 猜数字游戏相关的知识,希望对你有一定的参考价值。

先将两个字符串位置相同且大小相等的数字全都换成字母‘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]!=;i++)
    {
        if(secret[i]==guess[i])
        {
            a++;
            secret[i]=guess[i]=x; 
        }
    }
    for(int i=0;secret[i]!=;i++)
    {
        h[secret[i]]++;
    }
    for(int i=0;guess[i]!=;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. 猜数字游戏的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode-299. 猜数字游戏

LeetCode-299. 猜数字游戏

LeetCode 299 猜数字游戏[遍历] HERODING的LeetCode之路

leetcode 299. 猜数字游戏(Bulls and Cows)

LeetCode 299. 猜数字游戏

leetcode打卡——299. 猜数字游戏(求交集or标记法)