题目列表
第一题:数字转换为字符串
题目
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