网站建设汇报材料,优化网站架构,电商网站建设案例,网站服务器租用多少钱才合理呢【LetMeFly】299.猜数字游戏#xff1a;计数
力扣题目链接#xff1a;https://leetcode.cn/problems/bulls-and-cows/
你在和朋友一起玩 猜数字#xff08;Bulls and Cows#xff09;游戏#xff0c;该游戏规则如下#xff1a;
写出一个秘密数字#xff0c;并请朋友猜…【LetMeFly】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
示例 2
输入secret 1123, guess 0111
输出1A1B
解释数字和位置都对公牛用 | 连接数字猜对位置不对奶牛的采用斜体加粗标识。
1123 1123| or |
0111 0111
注意两个不匹配的 1 中只有一个会算作奶牛数字猜对位置不对。通过重新排列非公牛数字其中仅有一个 1 可以成为公牛数字。 提示
1 secret.length, guess.length 1000secret.length guess.lengthsecret 和 guess 仅由数字组成
方法一计数 A A A的值为secret[i] guess[i]的个数 A B AB AB的值为secret中与guess中相同数字的个数
因此使用两个大小为 10 10 10的整数数组或哈希表来分别存放两个字符串中每个数字出现的次数 min ( b i n 1 [ i ] , b i n 2 [ i ] ) \min(bin1[i], bin2[i]) min(bin1[i],bin2[i])之和即为 A B AB AB的值。
时间复杂度 O ( l e n ( s e c r e t s ) C ) O(len(secrets) C) O(len(secrets)C)其中 C 10 C10 C10空间复杂度 O ( C ) O(C) O(C)
AC代码
C
class Solution {
public:string getHint(string secret, string guess) {int se[10] {0}, gu[10] {0};int A 0, AB 0;for (char c : secret) {se[c - 0];}for (int i 0; i guess.size(); i) {gu[guess[i] - 0];if (guess[i] secret[i]) {A;}}for (int i 0; i 10; i) {AB min(se[i], gu[i]);}return to_string(A) A to_string(AB - A) B;}
};Python
from collections import Counterclass Solution:def getHint(self, secret: str, guess: str) - str:A sum(secret[i] guess[i] for i in range(len(secret)))AB sum((Counter(secret) Counter(guess)).values())return f{A}A{AB - A}B同步发文于CSDN和我的个人博客原创不易转载经作者同意后请附上原文链接哦~ Tisfyhttps://letmefly.blog.csdn.net/article/details/136598725