Leetcode 299. Bulls and Cows

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 and B 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.

猜数字,完全猜对一位为A,猜对数字但位置不对为B,统计多少个A和B。

map维护一下就行了,没什么含量。

class Solution {
public:
    string getHint(string secret, string guess) {
        int A = 0, B = 0;
        unordered_map<char, int> mp, mp2;
        for(int i = 0; i < secret.size(); i++)
        {
            if(secret[i] == guess[i]) A++;
            else 
            {
                mp[secret[i]]++;
                mp2[guess[i]]++;
            }
        }
        for(auto k : mp) B += min(k.second, mp2[k.first]);
        return to_string(A) + "A" + to_string(B) + "B";
    }
};      

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • gsoap开发webservice

    gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。绝大多数的C++w...

    cloudskyme
  • 向前字典排序

              next_permutation算法对区间元素进行一次组合排序,使之字典顺序大于原来的排序,有如下两个使用原形,对迭代器区间[first,l...

    Gxjun
  • error LNK1104: cannot open file 错误解决方案

    1、在TOOLS->OPTIONS->Directories->Library files,加入你的LIB文件所在的目录,然后在Project->setting...

    cloudskyme
  • directui

    DirectUI DirectUI意为直接在父窗口上绘图(Paint on parent dc directly)。即子窗口不以窗口句柄的形式创建(windo...

    cloudskyme
  • js压缩工具1.0界面绘制

    使用的是MFC,建立工程之后需要美化界面,因为在第一个版本中没想加入太多的内容,所以界面比较简单。 创建MFC的document工程 ? 按照以下格式绘制页面,...

    cloudskyme
  • C++动态链接库

    动态链接库 动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL 是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可...

    cloudskyme
  • 结构体存入文件并且取出

    首先定义结构体 struct student_type { char name[10]; int num; int age; } stu...

    cloudskyme
  • MFC自绘按钮的实现

    自绘按钮的实现过程 申明自绘属性 进行VM_MESUREITEM事件响应,说明按钮的尺寸 进行VM_DRAWITEM消息的重新响应,说明如何绘制按钮 首先在vc...

    cloudskyme
  • C/C++——set的基本操作总结

    set容器中只能存储键,是单纯的键的集合,其中键是不能重复的。 set支持大部分的map的操作,但是set不支持下标的操作,而且没有定义mapped_type...

    zhaozhiyong
  • 用c++写一个广告系统

    用到的基础类库 1、sstream <sstream> 库定义了三种类:istringstream、ostringstream和stringstream,分别用...

    财主刀刀

扫码关注云+社区

领取腾讯云代金券