慕斯王
2023-05-25 17:26:49
給定這本字典:const DIGIT_TO_LETTERS = { 1: [], 2: ['a', 'b', 'c'], 3: ['d', 'e', 'f'], 4: ['g', 'h', 'i'], 5: ['j', 'k', 'l'], 6: ['m', 'n', 'o'], 7: ['p', 'q', 'r', 's'], 8: ['t', 'u', 'v'], 9: ['w', 'x', 'y', 'z']}找出按下了什么數字來得到這個詞'mad'。我似乎找不到不是 n^2 的解決方案(遍歷每個數組并尋找字母)。
1 回答

慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
您可以為字母及其數字獲取一個對象,并通過查找某個字母進行轉換。
const
DIGIT_TO_LETTERS = { 1: [], 2: ['a', 'b', 'c'], 3: ['d', 'e', 'f'], 4: ['g', 'h', 'i'], 5: ['j', 'k', 'l'], 6: ['m', 'n', 'o'], 7: ['p', 'q', 'r', 's'], 8: ['t', 'u', 'v'], 9: ['w', 'x', 'y', 'z'] },
LETTERS_TO_DIGITS = Object
.entries(DIGIT_TO_LETTERS)
.reduce((r, [v, letters]) => {
letters.forEach(l => r[l] = +v);
return r;
}, {}),
convert = string => Array.from(string, l => LETTERS_TO_DIGITS[l]);
console.log(convert('mad'))
添加回答
舉報
0/150
提交
取消