ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2022/6/3学习记录

2022-06-03 12:00:24  阅读:141  来源: 互联网

标签:obj 记录 555 cid 学习 2022 var odd change


JS算法题

罗马数字转换器

把传入的数字转为罗马数字。 转换后的罗马数字字母必须都是大写

Solution:

function convertToRoman(num) {

  var lookup = {
    M:1000,
    CM:900,
    D:500,
    CD:400,
    C:100,
    XC:90,
    L:50,
    XL:40,
    X:10,
    IX:9,
    V:5,
    IV:4,
    I:1},
    roman = '',
    i;
  for (i in lookup){
     while (num >= lookup[i]) {
    roman += i;
    num -= lookup[i];
  }
  
  }
 return roman;
}

凯撒密码

凯撒密码( Caesar cipher)是最简单且最广为人知的密码(ciphers),也被称为移位密码(shift cipher)。 在移位密码中,明文中的字母通过按照一个固定数目进行偏移后被替换成新的字母。

ROT13 是一个被广泛使用的加密技术,明文中的所有字母都被移动 13 位。 也就是, A ↔ N,B ↔ O 等等。

编写一个函数,它将 ROT13 编码的字符串作为输入并返回解码字符串。

所有解码后的字母都必须为字母大写。 请不要解码非字母的字符(例如,空格、标点符号),但你需要在结果中保留它们。

Solution:

  function rot13(str) {
    var newstr = [];
    for(var i =0 ;i<str.length;++i){
      if(str.charCodeAt(i)<65||str.charCodeAt(i)>90){
        newstr.push(str[i]);
      }else if(str.charCodeAt(i)<=77){
        newstr.push(String.fromCharCode(str.charCodeAt(i)+13));
      }else{
        newstr.push(String.fromCharCode(str.charCodeAt(i)-13));
      }
  }
  return newstr.join('');
}

电话号码检查器

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

只要是有效的美国电话号码的格式,用户可以按照他们的方式填写表单中的电话号码。 以下是一些正确的例子(其他格式变形请参考以下例子):

555-555-5555
(555)555-5555
(555)555-5555
555 555 5555
5555555555
1 555 555 5555
在这个挑战中,参数可能是 800-692-7753 或者 8oo-six427676;laskdjf 的号码。 你的任务是根据上面不同的格式组合,判断它是否为有效的电话号码。 其中,地区码(电话号码中的前三位)是必须的。 如果提供国家代码,则国家代码只能为 1。 如果传入的参数是有效的美国电话号码就返回 true,否则返回 false。

Solution:

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

计算找零

请编写一个用于收银机的函数 checkCashRegister():它的第一个参数为售价 price、第二个参数为支付金额 cash、第三个参数为收银机內的金额 cid。

cid 是包含货币面值的二维数组。

函数 checkCashRegister() 应返回含有 status 属性和 change 属性的对象。

如果收银机內的金额少于应找回的零钱数,或者你无法返回确切的数目时,返回 {status: "INSUFFICIENT_FUNDS", change: []}。

如果收银机內的金额恰好等于应找回的零钱数,返回 {status: "CLOSED", change: [...]},其中 change 的属性值就是收银机內的金额。

否则,返回 {status: "OPEN", change: [...]},其中 change 键值是应找回的零钱数,并将找零的面值由高到低排序。

货币单位 Unit 面值
Penny 0.01 美元(PENNY)
Nickel 0.05 美元(NICKEL)
Dime 0.1 美元(DIME)
Quarter 0.25 美元(QUARTER)
Dollar 1 美元(ONE)
Five Dollars 5 美元(五)
Ten Dollars 10 美元(TEN)
Twenty Dollars 20 美元(TWENTY)
One-hundred Dollars 100美元(ONE HUNDRED)
下面的抽屉里现金数组示例:

[
["PENNY", 1.01],
["NICKEL", 2.05],
["DIME", 3.1],
["QUARTER", 4.25],
["ONE", 90],
["FIVE", 55],
["TEN", 20],
["TWENTY", 60],
["ONE HUNDRED", 100]
]

Solution:

function checkCashRegister(price, cash, cid) {
  var obj = {};
  var num = 0;
  var odd = cash -price;
  var arr = [];
var figure = [100, 20, 10, 5, 1, 0.25, 0.1, 0.05, 0.01];

  var a = 0;
  for(let i = 0; i < cid.length; i++){
    var s = cid[i][0];
    obj[s] = cid[i][1];
    num += cid[i][1];
  }
  if(odd === num){
    return {status: "CLOSED", change: cid};
  }
  for(var j = 0; j < Object.keys(obj).length; j++){
    var name = Object.keys(obj)[8 - j];
  
    change();
  

    if(a > 0){
      arr.push([name, figure[j] * a]);
      a = 0;
    }
  }
    function change(){
      if(odd >= figure[j] && obj[name] >= figure[j]){
      odd = odd - figure[j];
      odd = Math.round(odd * 10000) / 10000;
      obj[name] = obj[name] - figure[j];
      obj[name] = Math.round(obj[name]);
      a++;
      change();
      }
    }
    if(odd === 0){
      return {status: "OPEN", change: arr};
    }
    else if(odd > 0){
      return {status: "INSUFFICIENT_FUNDS", change: []};
    }
}

标签:obj,记录,555,cid,学习,2022,var,odd,change
来源: https://www.cnblogs.com/patricklee7/p/16339775.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有