[299] Bulls and Cows

原创 2016年08月31日 15:01:36

[题目描述]

You are playing the following Bulls and Cows game with your friend: You write down a number and ask your friend to guess what the number is. Each time your friend makes a guess, you provide a hint that indicates how many digits in said guess match your secret number exactly in both digit and position (called "bulls") and how many digits match the secret number but locate in the wrong position (called "cows"). Your friend will use successive guesses and hints to eventually derive the secret number.

For example:

Secret number:  "1807"
Friend's guess: "7810"
Hint: 1 bull and 3 cows. (The bull is 8, the cows are 01 and 7.)

Write a function to return a hint according to the secret number and friend's guess, use A to indicate the bulls andB to indicate the cows. In the above example, your function should return "1A3B".

Please note that both secret number and friend's guess may contain duplicate digits, for example:

Secret number:  "1123"
Friend's guess: "0111"
In this case, the 1st 1 in friend's guess is a bull, the 2nd or 3rd 1 is a cow, and your function should return"1A1B".

You may assume that the secret number and your friend's guess only contain digits, and their lengths are always equal.

【解题思路】

哈希表,扫描两边,时间复杂度O(n)

【代码】

class Solution {
public:
    string getHint(string secret, string guess) {
         int cntA=0,cntB=0;
        int lens=secret.length();
        int leng=guess.length();
        string a,b;
        stringstream ss,ss1;
        map<char,int> m;
        for(int i=0;i<lens;i++){
            m[secret[i]]++;
            if(secret[i]==guess[i]){
                cntA++;
                m[secret[i]]--;            
                
            }
        }
        for(int i=0;i<lens;i++){
            if(secret[i]!=guess[i]&&m[guess[i]]!=0){
                cntB++;
                m[guess[i]]--;
            } 
        }
        ss<<cntA;
        ss>>a;
        ss1<<cntB;
        ss1>>b;
        return a+"A"+b+"B";
    }
};


版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS企业版证书($299)In-House方式发布指南

iOS企业版证书($299)In-House方式发布指南 我们需要发布一个ipa放到网上,所有人(包括越狱及非越狱设备)可以直接通过链接下载安装,不需要通过AppStore,也不需要安装任何证书...
  • u011961093
  • u011961093
  • 2015年10月22日 18:42
  • 1097

POJ 2226 Muddy Fields(二分匹配 巧妙的建图)

POJ 2226 Muddy Fields(二分匹配 巧妙的建图)
  • u012860063
  • u012860063
  • 2014年09月11日 18:46
  • 1219

POJ 2182 Lost Cows(树状数组,暴力解法)

POJ 2182 Lost Cows(树状数组,暴力解法) 分析:        其实这道题目只要会手算用例就能暴力解决。        假设读入题目给的数组a[n],其中a[1]=0 这道题目只给出...
  • u013480600
  • u013480600
  • 2014年03月20日 02:00
  • 1649

Leetcode 299. Bulls and Cows (Easy) (cpp)

Leetcode 299. Bulls and Cows (Easy) (cpp)
  • Niko_Ke
  • Niko_Ke
  • 2016年07月12日 12:41
  • 233

Leetcode_299_Bulls and Cows

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/50768550 You are playing ...
  • pistolove
  • pistolove
  • 2016年02月29日 21:49
  • 1335

(LeetCode 299) Bulls and Cows (HashTable)

Q: You are playing the following Bulls and Cows game with your friend: You write down a number and ...
  • u014616233
  • u014616233
  • 2016年04月19日 12:23
  • 290

299-e-Bulls and Cows

数字游戏,根据提示猜数字。乍一看就是哈希了,好像不难上手就写,但后来发现自己根本没完全理解要求导致老是错误。难点在于当有重复数字时确定那个cows,也就是b。反正自己写了蛮久cows的逻辑,我只看出了...
  • kakulukia
  • kakulukia
  • 2016年03月30日 17:01
  • 135

[Leetcode] 299. Bulls and Cows 解题报告

题目: You are playing the following Bulls and Cows game with your friend: You write down a number...
  • magicbean2
  • magicbean2
  • 2017年07月17日 15:10
  • 149

299. Bulls and Cows | LeetCode

299. Bulls and Cows
  • orz_713
  • orz_713
  • 2016年08月08日 00:56
  • 123

【LeetCode-299】Bulls and Cows

问题描述:   Bulls and Cows这个问题从本质上来讲就是给你两个字符串,让你求出这两个字符串中字符相同且位置相同的字符个数以及字符相同且位置不同的字符个数。记两个字符串分别为secret和...
  • liujiayu1015
  • liujiayu1015
  • 2015年11月14日 16:00
  • 253
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[299] Bulls and Cows
举报原因:
原因补充:

(最多只允许输入30个字)