LeetCode 299. Bulls and Cows
创始人
2024-06-02 09:10:42
0

LeetCode 299. Bulls and Cows

题目描述

You are playing the Bulls and Cows game with your friend.

You write down a secret number and ask your friend to guess what the number is. When your friend makes a guess, you provide a hint with the following info:

The number of “bulls”, which are digits in the guess that are in the correct position.
The number of “cows”, which are digits in the guess that are in your secret number but are located in the wrong position. Specifically, the non-bull digits in the guess that could be rearranged such that they become bulls.
Given the secret number secret and your friend’s guess guess, return the hint for your friend’s guess.

The hint should be formatted as “xAyB”, where x is the number of bulls and y is the number of cows. Note that both secret and guess may contain duplicate digits.

思路

  1. 同时遍历secret和guess, 使用一个哈希表fre[byte]int来记录secret和guess中每个数字出现的次数
  2. 如果secret[i] == guess[i],则bulls++
  3. 否则, secret[i]出现的次数加1,guess[i]出现的次数减1
  4. 同时判断, secret[i]出现的次数是否小于0,因为如果小于0,说明之前出现过,在第3步中已经减过1了,所以如果小于0,说明guess[i]出现过,cows++
  5. 同理, guess[i]出现的次数是否大于0,如果是,则cows++
  6. 最后返回bulls和cows的字符串

例如: secret = “1123”, guess = “0111”

  1. secret[0] != guess[0], 因为fre[‘1’] = fre[‘0’] = 0, 所以不进入if, 最后fre中数据为: fre[‘1’] = 1, fre[‘0’] = -1, bulls = 0, cows = 0
  2. secret[1] == guess[1], 此时fre中数据为同上, bulls = 1, cows = 0
  3. 重点: secret[2] != guess[2], 因为fre[‘1’] = 1 > 0, 所以进入第二个if, cows++, 然后 fre[‘1’]–, fre[‘2’]++, 最后fre中数据为: fre[‘1’] = 0, fre[‘2’] = 1, bulls = 1, cows = 1
  4. secret[3] != guess[3], 此时fre[‘3’] = 0, fre[‘1’] = 0, 所以不进入任何if, 最后fre中数据为: fre[‘1’] = 0, fre[‘3’] = 1, bulls = 1, cows = 1

代码

func getHint(secret string, guess string) string {fre := make(map[byte]int, 10)bulls, cows := 0, 0for i := 0; i < len(secret); i++ {if secret[i] == guess[i] {bulls++} else {if fre[secret[i]] < 0 {cows++}if fre[guess[i]] > 0 {cows++}fre[secret[i]]++fre[guess[i]]--}}return fmt.Sprintf("%dA%dB", bulls, cows)
}

相关内容

热门资讯

七年级语文月考1(经典3篇) 七年级语文月考1 篇一:我眼中的好老师作为一名七年级学生,我曾经遇到过很多老师。有些老师严厉,有些老...
你快乐就好-初中作文【优质5... 你快乐就好-初中作文 篇一快乐是一种美妙的情绪,它能够让人心情愉悦、精神焕发。而我认为,一个人的快乐...
初一我收获了友谊作文700字... 初一我收获了友谊作文700字 第一篇面,风很大,天气阴沉沉的。“怦怦怦!怦怦怦!”“1、2、3、4…...
初一暑假一件事作文500字(... 初一暑假一件事作文500字 篇一初一暑假,我参加了一次短期夏令营活动。这是我第一次参加夏令营,我非常...
初中英语人称代词语法【经典3... 初中英语人称代词语法 篇一人称代词在英语语法中扮演着重要的角色。它们用来代替名词,并且根据人称的不同...
初一记忆中的暖流作文(优选6... 初一记忆中的暖流作文 篇一初一是我人生中一个重要的阶段,那段时间充满了回忆和暖流。初一的生活虽然紧张...
包装无悔生命初一作文(精选5... 包装无悔生命初一作文 篇一包装无悔生命生命是一场旅程,每个人都在这个旅程中扮演着不同的角色,承载着不...
初一满分写景作文共50篇 初一满分写景作文 第一篇时间真快,转眼间我就初一了,整整一个暑假都没有看见过母校的美景了。真是“归来...
月亮抒情作文范文初一推荐90... 月亮抒情作文范文初一 第一篇又到了一年一度的中秋节,我很高兴,因为我喜欢赏月,喜欢听中秋的美丽传说,...
青春风采初中作文(优秀5篇) 青春风采初中作文 篇一:追逐梦想的青春青春是一段美好的时光,是我们追逐梦想的时刻。初中时期,正是我们...
中秋奇趣初中作文(精简5篇) 中秋奇趣初中作文 篇一中秋佳节,是中国传统的重要节日之一。在这一天,人们会与家人团聚,品尝美食,赏月...
七年级我来了作文700字推荐... 七年级我来了作文700字 第一篇经过一个暑假的放松,我终于走进了初中校园的大门。满怀着激动与兴奋,我...
我的姐姐300字作文(精选3... 我的姐姐300字作文 篇一我的姐姐是一个非常温柔可爱的人。她长得高高的,有一头乌黑亮丽的长发,眼睛大...
哎哟妈妈初中优秀作文(通用6... 哎哟妈妈初中优秀作文 篇一我与妈妈的成长小时候,我总是觉得妈妈是世界上最美丽、最聪明、最伟大的人。每...
河南人怎么了作文【优质3篇】 河南人怎么了作文 篇一河南人怎么了?这是一个让人好奇的问题。作为一个河南人,我觉得我们是一个勤劳、坚...
奇妙的汉字作文(精选6篇) 奇妙的汉字作文 篇一汉字是中国文字的代表,有着悠久的历史和独特的魅力。每一个汉字都蕴含着深刻的含义和...
你为什么不说话(精简6篇) 你为什么不说话 篇一在我们的生活中,总会遇到一些沉默寡言的人,他们不善于表达自己的情感和想法,给人一...
退化初一作文(推荐5篇) 退化初一作文 篇一退化初一作文 篇一我所见到的退化社会最近,我注意到了一个令人担忧的现象:社会正在逐...
这样多美丽作文600字_初一... 这样多美丽作文600字_初一作文 篇一梦幻花海梦幻花海是世界上最美丽的景色之一。当你踏入花海时,仿佛...
秋天来了初一作文(实用5篇) 秋天来了初一作文 篇一秋天的脚步悄悄地走进了我们的生活,初一的同学们也开始感受到了秋天的气息。在这个...