★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-mxgiobmh-ku.html
➤若是连接不是山青咏芝的博客园地址,则多是爬取做者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持做者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
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.git
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. github
Please note that both secret number and friend's guess may contain duplicate digits.微信
Example 1:ide
Input: secret = "1807", guess = "7810"
Output: "1A3B"
Explanation: bull and cows. The bull is , the cows are , and 138017.
Example 2:函数
Input: secret = "1123", guess = "0111" Output: "1A1B" Explanation: The 1st in friend's guess is a bull, the 2nd or 3rd is a cow.11
Note: You may assume that the secret number and your friend's guess only contain digits, and their lengths are always equal.spa
你正在和你的朋友玩 猜数字(Bulls and Cows)游戏:你写下一个数字让你的朋友猜。每次他猜想后,你给他一个提示,告诉他有多少位数字和确切位置都猜对了(称为“Bulls”, 公牛),有多少位数字猜对了可是位置不对(称为“Cows”, 奶牛)。你的朋友将会根据提示继续猜,直到猜出秘密数字。code
请写出一个根据秘密数字和朋友的猜想数返回提示的函数,用 A
表示公牛,用 B
表示奶牛。htm
请注意秘密数字和朋友的猜想数均可能含有重复数字。blog
示例 1:
输入: secret = "1807", guess = "7810" 输出: "1A3B" 解释: 公牛和 奶牛。公牛是 ,奶牛是 , 和 。138017
示例 2:
输入: secret = "1123", guess = "0111" 输出: "1A1B" 解释: 朋友猜想数中的第一个 是公牛,第二个或第三个 可被视为奶牛。11
说明: 你能够假设秘密数字和朋友的猜想数都只包含数字,而且它们的长度永远相等。
40ms
1 class Solution { 2 func getHint(_ secret: String, _ guess: String) -> String { 3 4 var acount = 0 5 var bcount = 0 6 7 var secArr = Array(secret) 8 var gueArr = Array(guess) 9 10 for i in 0..<secArr.count where secArr[i] == gueArr[i] { 11 acount += 1 12 secArr[i] = "a" 13 gueArr[i] = "b" 14 } 15 16 secArr = secArr.filter{return $0 != "a"} 17 gueArr = gueArr.filter{return $0 != "b"} 18 19 for i in 0..<gueArr.count { 20 let gue = gueArr[i] 21 22 for j in 0..<secArr.count where secArr[j] == gue { 23 bcount += 1 24 secArr.remove(at: j) 25 break 26 } 27 28 } 29 30 return "\(acount)A\(bcount)B" 31 } 32 }