美文网首页
FCC--高级算法

FCC--高级算法

作者: 爱吃的根号三 | 来源:发表于2017-08-29 17:36 被阅读15次

1.Validate US Telephone Numbers

如果传入字符串是一个有效的美国电话号码,则返回 true.

function telephoneCheck(str) {
    return /^1? ?(\d{3}|\(\d{3}\))[ -]?\d{3}[ -]?\d{4}$/.test(str);
}

telephoneCheck("555-555-5555");

2.Symmetric Difference

创建一个函数,接受两个或多个数组,返回所给数组的 对等差分(symmetric difference) (△ or ⊕)数组.

function sym(args) {
    let argsArr = Array.from(arguments);
    let result = argsArr.reduce((arr1, arr2) => {
        var arr1 = dis(arr1);
        var arr2 = dis(arr2);
        return symDif(arr1, arr2);
    }, [])

    return result.sort((a, b) => {
        return a - b;
    });
}

//去除每个数组中重复的数字
dis = (arr) => {
    return arr.filter((item, index, array) => {
        return array.indexOf(item) == index;
    })

}

//两个数组对等差分
symDif = (arr1, arr2) => {
    var newArr = arr1.filter((item) => {
        var index = arr2.indexOf(item);
        if (index < 0) {
            return true;
        } else {
            arr2.splice(index, 1);
            return false;
        }
    });
    return newArr.concat(arr2);
}

sym([1, 2, 3], [5, 2, 1, 4]);

3.Exact Change

设计一个收银程序 checkCashRegister() ,其把购买价格(price)作为第一个参数 , 付款金额 (cash)作为第二个参数, 和收银机中零钱 (cid) 作为第三个参数.

cid 是一个二维数组,存着当前可用的找零.

当收银机中的钱不够找零时返回字符串 "Insufficient Funds". 如果正好则返回字符串 "Closed".

否则, 返回应找回的零钱列表,且由大到小存在二维数组中.

4.Inventory Update

依照一个存着新进货物的二维数组,更新存着现有库存(在 arr1 中)的二维数组. 如果货物已存在则更新数量 . 如果没有对应货物则把其加入到数组中,更新最新的数量. 返回当前的库存数组,且按货物名称的字母顺序排列.

自己验证的时候没问题

function updateInventory(arr1, arr2) {
    // 请保证你的代码考虑到所有情况

    const newArr = curInv.map((item) => item[1]);
    newInv.forEach((item, index, arr) => {
        var i = newArr.indexOf(item[1]);
        if (i >= 0) {
            curInv[i][0] += newInv[index][0];
        } else {
            curInv.push(newInv[index]);
        }
    })

    return curInv.sort((a, b) => {
        return a[1].charCodeAt(0) - b[1].charCodeAt(0);
    });
}

// 仓库库存示例
var curInv = [
    [21, "Bowling Ball"],
    [2, "Dirty Sock"],
    [1, "Hair Pin"],
    [5, "Microphone"]
];

var newInv = [
    [2, "Hair Pin"],
    [3, "Half-Eaten Apple"],
    [67, "Bowling Ball"],
    [7, "Toothpaste"]
];

updateInventory(curInv, newInv);

5.No repeats please
把一个字符串中的字符重新排列生成新的字符串,返回新生成的字符串里没有连续重复字符的字符串个数.连续重复只以单个字符为准

例如, aab 应该返回 2 因为它总共有6中排列 (aab, aab, aba, aba, baa, baa), 但是只有两个 (aba and aba)没有连续重复的字符 (在本例中是 a).

相关文章

  • FCC--高级算法

    1.Validate US Telephone Numbers 如果传入字符串是一个有效的美国电话号码,则返回 t...

  • 数据结构+算法

    排序算法 基本排序:冒泡、选择、插入 高级排序希尔、归并、快速 检索算法 顺序查找、二分查找 高级算法 动态规划斐...

  • 高级语言视角

    高级语言视角 算法语言 高级语言编程都是通过描述算法,在其中描述算法的逻辑结构主要就是分支和循环。高级计算机语言编...

  • 高级算法

    请你讲讲LRU算法的实现原理? 考察点:LRU算法参考回答: ①LRU(Least recently used,最...

  • Java分组密码算法DES

    Java分组密码算法DES 1实验内容 掌握分组密码算法DES方法,能用高级语言实现分组密码算法DES。DES算法...

  • AES加密算法和RSA加密算法

    引用 AES加密算法原理AES加密算法的C++实现密码算法详解——AES(高级加密算法) 1. 前言 本文针对加密...

  • 【SpringBoot DB 系列】Redis 高级特性之 Hy

    【SpringBoot DB 系列】Redis 高级特性之 HyperLoglog hyperloglog 算法,...

  • 5.2 密码学专题 - 对称加密算法 - AES 算法

    密码学专题 - 对称加密算法 - AES 算法 高级加密标准 (AES) 是美国政府制定用来取代 DES 算法的标...

  • 对称加密算法AES

    AES(Advanced Encryption Standard),高级加密标准,对称算法,是下一代的加密算法标准...

  • 优化算法进阶;word2vec;词嵌入进阶 2020-02-25

    优化算法进阶 介绍更高级的优化算法 Momentum epoch 20, x1 -0.943467, x2 -0....

网友评论

      本文标题:FCC--高级算法

      本文链接:https://www.haomeiwen.com/subject/whdodxtx.html