• 299. 猜数字游戏 Python



    一、题目描述

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

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

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

    给你一个秘密数字 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 仅由数字组成

    二、代码

    代码如下:

    class Solution:
        def getHint(self, secret: str, guess: str) -> str:
            secret_list = list(secret)
            guess_list = list(guess)
            A = [guess_list[i] for i in range(len(guess_list)) if guess_list[i] == secret_list[i]]
            new_list_B = [guess_list[i] for i in range(len(guess_list)) if guess_list[i] != secret_list[i]]
            new_list_A = [secret_list[i] for i in range(len(guess_list)) if guess_list[i] != secret_list[i]]
            B = 0
            for e in new_list_B:
                if e in new_list_A:
                    new_list_A.remove(e)
                    B += 1
            result = str(len(A)) + "A" + str(B) + "B"
            print(result)
            return result
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    三、解题思路

    本题主要是题意难以理解,实际问题是,1. 从secretguess中找出所有字符相同且位置也相同的字符的总数量作为“A”的值;2. 从除了“A”中用到的字符以外的剩余字符中找出guess字符在secret字符中的数量,这里需要说明的是,当前的guess字符如果存在于secret中,则令“B”的值加1并删除在secret中的对应字符。

  • 相关阅读:
    VB.NET—DataGridView控件教程详解
    HTML静态网页成品作业(HTML+CSS)——图书出版社介绍设计制作(6个页面)
    常用SQL——IF介绍
    PHP内存马技术研究与查杀方法总结
    电力系统的虚假数据注入攻击和MTD系统研究(Matlab代码实现)
    http协议与tomcat
    java毕业设计广告投放mybatis+源码+调试部署+系统+数据库+lw
    【YSYY】DSPE-PEG-Transferrin;DSPE-PEG-TF转铁蛋白的主动靶向介绍;磷脂-聚乙二醇-转铁蛋白
    ChatGpt介绍和国产ChatGpt对比
    万物皆可集成系列:低代码释放用友U8+深度价值(3)— 数据融合应用
  • 原文地址:https://blog.csdn.net/weixin_44807903/article/details/133966068