JavaScript 刷题 —— 三

第一题:数字转换为字符串

题目

sumStrings(‘1’,‘2’) // => ‘3’
注意的地方在于大数字的计算会被转换为科学计数法,并且会省略一部分数字,所以把科学计数法转换为正常十进制的结果不对
这里可以看出 toString 和 toLocalString两个方法的区别
我们需要的是:712577413488402631964821329
toString() : 7.125774134884027e+26
toLocalString() : 712,577,413,488,403,000,000,000,000

代码

// 没有解决,采用取巧的办法提交,去查看答案区的方法

//代码区方案
// 一、利用数组,逐个计算
function sumStrings(a,b) {
    
  var res="",c=0;
  a=a.split("");b=b.split("");
  while(a.length||b.length||c){
   
    c=+(a.length>0?a.pop():0) + +(b.length>0?b.pop():0)+c;
    res=(c%10).toString()+res;
    c=Math.floor(c/10);
  }
  res=res.replace(/^[0]*/g,"");
  return res;
}

第二题:字符串正则转换

题目

有多个相同的字符,转换为 ‘)’,单个字符转换为 ‘(’
Examples
“din” => “(((”
“recede” => “()()()”
“Success” => “)())())”
“(( @” => “))((”

代码

// 原始思路
// 注意点:
// new RegExp 可使用变量
// /[^A-z]/.test(item) && ('\\'+item) 判断并添加转义字符
function duplicateEncode(word){
   
    // ...
    let reW = word.length - word.replace(/\)/g,'').length > 1 ? word : word.replace(')','(')
    word.split('').forEach(item=>{
   
      if(item == ')') return;
      var rep = new RegExp(/[^A-z]/.test(item) && ('\\'+item) || item,'gi')
      reW = reW.length - word.replace(rep,'').length > 1 ? reW.replace(item,')') : reW.replace(item,'(')
    })
    return reW
}

// 代码区
// 一、比较某个元素初次出现的位置和最后出现的位置是否相同
function 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值