javascript - 解决这个面试问题:信汤(JS)
问题描述
这是一个我还无法解决的面试问题......我有这个矩阵:
[
['A', 'B', 'R'],
['H', 'A', 'H'],
['A', 'P', 'R'],
['P', 'L', 'A'],
['G', 'E', 'F']
]
我需要找到“APPLE”这个词,但我可以选择的字母必须尽可能接近,在这种情况下: (2;0) (2;1) (3;0) (3;1) (4; 1)
我必须找到单词并返回其字符的坐标
使用 Javascript 你是如何做到的?
我试过这个:
const soup = [
['A', 'B', 'R'],
['H', 'A', 'H'],
['A', 'P', 'R'],
['P', 'L', 'A'],
['G', 'E', 'F']
];
const word = 'APPLE';
const letters = word.split('');
let hashTable = {};
for (let letter of letters) {
for (let line = 0; line < soup.length; line++) {
for (let i = 0; i < soup[line].length; i++ ) {
console.log(soup[line][i]);
if (letter === soup[line][i]) {
hashTable[letter] = [line, i];
}
}
}
}
console.log(hashTable);
解决方案
您可以使用矩阵行和列作为键,并使用字母表作为值。在您的情况下,您将 p 两次存储在同一个对象中。所以我们不能在下面的代码中复制对象中的键供您参考
const soup = [
["A", "B", "R"],
["H", "A", "H"],
["A", "P", "R"],
["P", "L", "A"],
["G", "E", "F"]
];
const word = "APPLE";
let index = 0;
let hashTable = {};
for (let line = 0; line < soup.length; line++) {
for (let i = 0; i < soup[line].length; i++) {
if (word[index] === soup[line][i] && index < word.length) {
const col = i + 1;
const row = line + 1
const key = row + "," + col;
hashTable[key] = soup[line][i];
index++;
}
}
}
console.log(hashTable);
推荐阅读
- vb.net - 'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册。微软办公室 365
- python - python中的字典到熊猫数据框
- numpy - 为什么 Numpy.fromfile 无法读取整个文件的值?
- kubernetes - 如何使用 helm 图表将 Argo 应用程序指向目录
- java - 检测到 Logback 配置错误:[springProfile] 没有适用的操作,当前 ElementPath 是 [[configuration][springProfile]]
- javascript - 为什么我不能在 JavaScript 代码中执行 Java 方法?
- plot - Julia中的Colorplot具有尴尬的数据格式
- python - 如果转换无效,是否可以阻止触发器的执行?
- php - 将 Oauth 与 eBay Browse API 集成
- reactjs - 为什么我无法在 Formik 中获取日期和文本区域的值?