程序员面试金典 - 面试题 16.15. 珠玑妙算(map计数)
生活随笔
收集整理的這篇文章主要介紹了
程序员面试金典 - 面试题 16.15. 珠玑妙算(map计数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
珠璣妙算游戲(the game of master mind)的玩法如下。
計算機有4個槽,每個槽放一個球,顏色可能是紅色(R)、黃色(Y)、綠色(G)或藍色(B)。
例如,計算機可能有RGGB 4種(槽1為紅色,槽2、3為綠色,槽4為藍色)。
作為用戶,你試圖猜出顏色組合。打個比方,你可能會猜YRGB。
要是猜對某個槽的顏色,則算一次“猜中”;要是只猜對顏色但槽位猜錯了,則算一次“偽猜中”。
注意,“猜中”不能算入“偽猜中”。
給定一種顏色組合solution和一個猜測guess,編寫一個方法,返回猜中和偽猜中的次數answer,其中answer[0]為猜中的次數,answer[1]為偽猜中的次數。
示例: 輸入: solution="RGBY",guess="GGRR" 輸出: [1,1] 解釋: 猜中1次,偽猜中1次。提示: len(solution) = len(guess) = 4 solution和guess僅包含"R","G","B","Y"這4種字符來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/master-mind-lcci
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
class Solution { public:vector<int> masterMind(string solution, string guess) {map<char,int> m;vector<int> ans(2,0);for(int i = 0; i < 4; ++i){if(solution[i] == guess[i])//猜中了ans[0]++;else//沒猜中m[solution[i]]++;}for(int i = 0; i < 4; ++i){if(guess[i] != solution[i])//沒猜中的里面,有偽猜中{if(m.count(guess[i]) && m[guess[i]] > 0)ans[1]++, m[guess[i]]--;}}return ans;} };總結
以上是生活随笔為你收集整理的程序员面试金典 - 面试题 16.15. 珠玑妙算(map计数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员面试金典 - 面试题 05.01.
- 下一篇: LintCode 1689. k求和II