📌  相关文章
📜  day 8 字典和地图hackerrank解决方案javascript(1)

📅  最后修改于: 2023-12-03 15:30:23.240000             🧑  作者: Mango

Hackerrank Day 8: 字典和地图解决方案 JavaScript

本文为Hackerrank Day 8: 字典和地图解决方案的JavaScript版本的介绍。本题的要求是对于给出的n个单词和其对应的电话号码,构建一个电话号码字典,通过输入单词实现查询电话号码的操作。

解题思路

题目要求建立一个字典,我们可以将其构建为一个对象。对象的属性为单词,属性值为电话号码。根据题目的要求,我们可以通过以下步骤来解决这个问题:

  1. 首先,我们需要接收一个整数n,表示要输入的单词的数量,以及n个键值对,其中每个键值对表示一个单词和电话号码

  2. 然后,我们需要将每个键值对添加到字典中,可以通过对象的属性操作来实现

  3. 最后,我们需要循环读入查询单词,并通过对象的属性操作查找相应的电话号码

为了避免错误,我们应该对每个查询单词都进行一次非空判断,以防止在字典中查找一个不存在的单词。

代码实现

首先,我们需要定义一个字典对象,其内部包含了一个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 实现算法的能力的提升的一个机会,相信大家在熟悉使用的同时也能学以致用。