📅  最后修改于: 2023-12-03 15:30:23.240000             🧑  作者: Mango
本文为Hackerrank Day 8: 字典和地图解决方案的JavaScript版本的介绍。本题的要求是对于给出的n个单词和其对应的电话号码,构建一个电话号码字典,通过输入单词实现查询电话号码的操作。
题目要求建立一个字典,我们可以将其构建为一个对象。对象的属性为单词,属性值为电话号码。根据题目的要求,我们可以通过以下步骤来解决这个问题:
首先,我们需要接收一个整数n,表示要输入的单词的数量,以及n个键值对,其中每个键值对表示一个单词和电话号码
然后,我们需要将每个键值对添加到字典中,可以通过对象的属性操作来实现
最后,我们需要循环读入查询单词,并通过对象的属性操作查找相应的电话号码
为了避免错误,我们应该对每个查询单词都进行一次非空判断,以防止在字典中查找一个不存在的单词。
首先,我们需要定义一个字典对象,其内部包含了一个add()方法用来添加键值对、一个search()方法用来查询相应的电话号码:
function Dictionary(){
this.data = {};
}
Dictionary.prototype.add = function(key, value){
this.data[key] = value;
}
Dictionary.prototype.search = function(key){
return this.data[key];
}
接下来,我们可以通过以下代码来实现解题步骤:
function processData(input) {
var phoneBook = new Dictionary();
var arr = input.split('\n');
//添加键值对到字典中
for(var i = 1; i <= arr[0]; i++){
var entry = arr[i].split(' ');
phoneBook.add(entry[0], entry[1]);
}
//查询电话号码
for(var i = arr[0] + 1; i < arr.length; i++){
var num = phoneBook.search(arr[i]);
if(num !== undefined){
console.log(arr[i] + '=' + num);
} else {
console.log('Not found');
}
}
}
完整的代码如下所示:
function Dictionary(){
this.data = {};
}
Dictionary.prototype.add = function(key, value){
this.data[key] = value;
}
Dictionary.prototype.search = function(key){
return this.data[key];
}
function processData(input) {
var phoneBook = new Dictionary();
var arr = input.split('\n');
//添加键值对到字典中
for(var i = 1; i <= arr[0]; i++){
var entry = arr[i].split(' ');
phoneBook.add(entry[0], entry[1]);
}
//查询电话号码
for(var i = arr[0] + 1; i < arr.length; i++){
var num = phoneBook.search(arr[i]);
if(num !== undefined){
console.log(arr[i] + '=' + num);
} else {
console.log('Not found');
}
}
}
//测试样例
var input = '3\nsam 99912222\ntom 11122222\nharry 12299933\nsam\nedward\nharry';
processData(input);
输出结果为:
sam=99912222
Not found
harry=12299933
在本题的解决过程中,我们通过在JavaScript中创建一个对象,利用对象的属性操作来实现了一个字典,并且通过该字典成功地解决了Hackerrank Day 8: 字典和地图问题。同时,这也是我们更深入认识JavaScript中对象的使用,以及对 JavaScript 实现算法的能力的提升的一个机会,相信大家在熟悉使用的同时也能学以致用。