299 猜數字遊戲

2021-10-09 00:16:59 字數 1356 閱讀 2957

題目描述:

你在和朋友一起玩 猜數字(bulls and cows)遊戲,該遊戲規則如下:

你寫出乙個秘密數字,並請朋友猜這個數字是多少。

朋友每猜測一次,你就會給他乙個提示,告訴他的猜測數字中有多少位屬於數字和確切位置都猜對了(稱為「bulls」, 公牛),有多少位屬於數字猜對了但是位置不對(稱為「cows」, 奶牛)。

朋友根據提示繼續猜,直到猜出秘密數字。

請寫出乙個根據秘密數字和朋友的猜測數返回提示的函式,返回字串的格式為 xayb ,x 和 y 都是數字,a 表示公牛,用 b 表示奶牛。

xa 表示有 x 位數字出現在秘密數字中,且位置都與秘密數字一致。

yb 表示有 y 位數字出現在秘密數字中,但位置與秘密數字不一致。

請注意秘密數字和朋友的猜測數都可能含有重複數字,每位數字只能統計一次。

示例 1:

輸入: secret = 「1807」, guess = 「7810」

輸出: 「1a3b」

解釋: 1 公牛和 3 奶牛。公牛是 8,奶牛是 0, 1 和 7。

示例 2:

輸入: secret = 「1123」, guess = 「0111」

輸出: 「1a1b」

解釋:朋友猜測數中的第乙個 1 是公牛,第二個或第三個 1 可被視為奶牛。

說明:你可以假設秘密數字和朋友的猜測數都只包含數字,並且它們的長度永遠相等。

方法1:

主要思路:

(1)使用unordered_map來對映secret中的元素,方便後買你的統計;

(2)先單獨統計出位置和元素都對的字元數量;

(3)再使用unordered_map統計出字元相同的數量,將字元相同的數量減去字元和位置都相同的字元的數量,即為字元相同但位置不同的字元的數量;

class

solution

int a=0;

int b=0;

//統計出字元和位置都相同的數量

for(

int i=

0;isize()

&&isize()

;++i)

}//統計出字元相同的數量

for(

int i=

0;isize()

;++i)

}return

to_string

(a)+

"a"+

to_string

(b-a)

+"b";}

};

299 猜數字遊戲

你正在和你的朋友玩 猜數字 bulls and cows 遊戲 你寫下乙個數字讓你的朋友猜。每次他猜測後,你給他乙個提示,告訴他有多少位數字和確切位置都猜對了 稱為 bulls 公牛 有多少位數字猜對了但是位置不對 稱為 cows 奶牛 你的朋友將會根據提示繼續猜,直到猜出秘密數字。請寫出乙個根據秘...

299 猜數字遊戲

你正在和你的朋友玩 猜數字 bulls and cows 遊戲 你寫下乙個數字讓你的朋友猜。每次他猜測後,你給他乙個提示,告訴他有多少位數字和確切位置都猜對了 稱為 bulls 公牛 有多少位數字猜對了但是位置不對 稱為 cows 奶牛 你的朋友將會根據提示繼續猜,直到猜出秘密數字。請寫出乙個根據秘...

299 猜數字遊戲

你正在和你的朋友玩 猜數字 bulls and cows 遊戲 你寫下乙個數字讓你的朋友猜。每次他猜測後,你給他乙個提示,告訴他有多少位數字和確切位置都猜對了 稱為 bulls 公牛 有多少位數字猜對了但是位置不對 稱為 cows 奶牛 你的朋友將會根據提示繼續猜,直到猜出秘密數字。請寫出乙個根據秘...