Problem
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.
Algorithm
Use three list to record the state, if a number is used just ignore it.
Code
class Solution:
def getHint(self, secret: str, guess: str) -> str:
slen = len(secret)
bulls = [0] * slen
cows = [0] * slen
used = [0] * slen
for i in range(slen):
if secret[i] == guess[i]:
bulls[i] = 1
used[i] = 1
for i in range(slen):
if not bulls[i]:
for j in range(slen):
if i != j and not bulls[j] and not used[j]:
if secret[j] == guess[i]:
cows[i] = 1
used[j] = 1
break
return str(sum(bulls)) + "A" + str(sum(cows)) + "B"

文章介绍了如何编写一个算法,用于在BullsandCows游戏中生成提示,给定朋友的猜测和你的秘密数字,程序会计算出正确位置的数字(bulls)和可调整位置的数字(cows)。
755

被折叠的 条评论
为什么被折叠?



