題目描述:
你在和朋友一起玩 猜數字(bulls and cows)遊戲,該遊戲規則如下:
你寫出乙個秘密數字,並請朋友猜這個數字是多少。
朋友每猜測一次,你就會給他乙個提示,告訴他的猜測數字中有多少位屬於數字和確切位置都猜對了(稱為「bulls」, 公牛),有多少位屬於數字猜對了但是位置不對(稱為「cows」, 奶牛)。
朋友根據提示繼續猜,直到猜出秘密數字。
請寫出乙個根據秘密數字和朋友的猜測數返回提示的函式,返回字串的格式為xayb
,x
和y
都是數字,a
表示公牛,用b
表示奶牛。
請注意秘密數字和朋友的猜測數都可能含有重複數字,每位數字只能統計一次。
示例 1:
輸入: secret = "1807", guess = "7810"
輸出: "1a3b"
解釋: 1 公牛和 3 奶牛。公牛是 8,奶牛是 0, 1 和 7。
示例 2:
輸入: secret = "1123", guess = "0111"
輸出: "1a1b"
解釋: 朋友猜測數中的第乙個 1 是公牛,第二個或第三個 1 可被視為奶牛。
思路:用兩個map分別記錄secret和guess字串中個數字出現的次數,然後取相同數字的最小值之和就是總的重複數字的數量;
遍歷字串時可以計算得到數字和位置都一樣的數量,記為counta,用總的數量減去counta即為countb,最後拼接字串即可
**實現:
/**
* @param secret
* @param guess
* @return
*/var gethint = function (secret, guess) ;
const guessmap = {};
for (let i = 0; i < secret.length; i++)
if (secretmap[char]) else
}for (let char of guess) else
}object.keys(secretmap)
.filter(char => guessmap[char])
.foreach(char => )
countb = countsum - counta;
return `$a$b`
};
執行結果: 從零開始刷力扣(十七) 598 範圍求和 II
題目描述 給定乙個初始元素全部為0,大小為 m n 的矩陣m以及在m上的一系列更新操作。操作用二維陣列表示,其中的每個操作用乙個含有兩個正整數 a 和 b 的陣列表示,含義是將所有符合 0 i a 以及 0 j b 的元素 m i j 的值都增加 1。在執行給定的一系列操作後,你需要返回矩陣中含有最...
從零開始刷力扣(九十七) 71 簡化路徑
給你乙個字串path,表示指向某一檔案或目錄的 unix 風格絕對路徑 以 開頭 請你將其轉化為更加簡潔的規範路徑。在 unix 風格的檔案系統中,乙個點 表示當前目錄本身 此外,兩個點 表示將目錄切換到上一級 指向父目錄 兩者都可以是複雜相對路徑的組成部分。任意多個連續的斜槓 即,都被視為單個斜槓...
從零開始刷力扣(五) 645 錯誤的集合
題目描述 集合s包含從1到n的整數。不幸的是,因為資料錯誤,導致集合裡面某乙個元素複製了成了集合裡面的另外乙個元素的值,導致集合丟失了乙個整數並且有乙個元素重複 給定乙個陣列nums代表了集合s發生錯誤後的結果。你的任務是首先尋找到重複出現的整數,再找到丟失的整數,將它們以陣列的形式返回。示例1 輸...