從零開始刷力扣(四十六) 299 猜數字遊戲

2021-10-12 17:48:01 字數 1467 閱讀 1871

題目描述:

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

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

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

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

請寫出乙個根據秘密數字和朋友的猜測數返回提示的函式,返回字串的格式為xaybxy都是數字,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 輸...