码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • LeetCode_299_猜数字游戏


    题目链接

    • https://leetcode.cn/problems/bulls-and-cows/

    题目描述

    你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:

    写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:

    • 猜测数字中有多少位属于数字和确切位置都猜对了(称为 “Bulls”,公牛),
    • 有多少位属于数字猜对了但是位置不对(称为 “Cows”,奶牛)。也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。

    给你一个秘密数字 secret 和朋友猜测的数字 guess ,请你返回对朋友这次猜测的提示。

    提示的格式为 “xAyB” ,x 是公牛个数, y 是奶牛个数,A 表示公牛,B 表示奶牛。

    请注意秘密数字和朋友猜测的数字都可能含有重复数字。

    示例 1:

    输入:secret = "1807", guess = "7810"
    输出:"1A3B"
    解释:数字和位置都对(公牛)用 '|' 连接,数字猜对位置不对(奶牛)的采用斜体加粗标识。
    "1807"
      |
    "7810"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    示例 2:

    输入:secret = "1123", guess = "0111"
    输出:"1A1B"
    解释:数字和位置都对(公牛)用 '|' 连接,数字猜对位置不对(奶牛)的采用斜体加粗标识。
    "1123"        "1123"
      |      or     |
    "0111"        "0111"
    注意,两个不匹配的 1 中,只有一个会算作奶牛(数字猜对位置不对)。通过重新排列非公牛数字,其中仅有一个 1 可以成为公牛数字。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    提示:

    • 1 <= secret.length, guess.length <= 1000
    • secret.length == guess.length
    • secret 和 guess 仅由数字组成

    解题思路

    遍历+统计

    • 对于公牛,需要数字和位置都一样,只要遍历secret和guess,找到secret.charAt(i) == guess.charAt(i)的数量即可
    • 对于奶牛,只需要统计sercet和guess中各个字符出现的次数,然后取相同字符的最小值累加,然后再减去公牛的数量即可

    AC代码

    class Solution {
        public String getHint(String secret, String guess) {
            int len = secret.length();
            int correct = 0;
            int justSame = 0;
            int[] recordS = new int[10];
            int[] recordG = new int[10];
            for (int i = 0; i < len; i++) {
                char s = secret.charAt(i);
                char g = guess.charAt(i);
                if (s == g) {
                    correct++;
                }
                recordS[s - '0']++;
                recordG[g - '0']++;
            }
            justSame += Math.min(recordS[0], recordG[0]);
            for (int i = 1; i <= 9; i++) {
                justSame += Math.min(recordS[i], recordG[i]);
            }
            return correct + "A" + (justSame - correct) + "B";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
  • 相关阅读:
    开源白板工具 Excalidraw 架构解读
    深度学习实战53-行业描述分类的实战应用:基于ALBERT模型和PyTorch框架的解析
    【Spring Boot】# 使用AOP实现接口鉴权访问、白名单限制、记录接口访问日志、限制接口请求次数
    小程序里面循环使用ref的话获取不到
    docker四种网络模式介绍
    alibaba.fastjson的使用(三)-- Map、List ==》JSON字符串
    什么是自动化测试框架?如何搭建自动化测试框架详解
    Linux权限认识
    基于python的django框架选题推荐生鲜超市供应平台
    使用binary-wang开发微信小程序的登录和微信支付
  • 原文地址:https://blog.csdn.net/Fitz1318/article/details/126154109
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号