美文网首页
由大数相加引发的JS中的特殊字符随笔总结

由大数相加引发的JS中的特殊字符随笔总结

作者: CindyLu91 | 来源:发表于2018-11-06 15:14 被阅读0次

一个大数相加的思路,膜拜大神

function sumStrings(a,b){

var res='', c=0;

a = a.split('');

b = b.split('');

while (a.length || b.length || c){

c += ~~a.pop() + ~~b.pop();

res = c % 10 + res;

c = c>9;

}

return res.replace(/^0+/,'');

}

说下自己的理解

1. 先把两个参数转换成数组以便循环,每次从数组中取出一个元素,用~~运算符进行数字类型转换

2. 变量res里保存的是最后相加的结果,是string类型,每次进行字符串连接。当两个数字相加超过10的时候进行取余,将取余结果进行连接

3. 最巧妙的地方是根据c>9来进行加法的进位,根据bool和number类型的转换。

下面列出了该算法里用到的一些基础知识

1. ~ 位非运算符, 对位求反,转换逻辑如下,实际使用中多用于判断某个字符串是否包含另外一个字符串

var testResult=(typeof testData==="number"&&!isNaN(testData)&&testData!==Infinity)?(testData>0)?-Math.floor(testData)-1:-Math.ceil(testData)-1:-1;

var a="a"; var b="bcca"; console.log(b.indexOf(a)); console.log(~b.indexOf(a));

  // 3,-4

~~字符运算规则 转换成数字类型

var testResult=(typeof testData==="number"&&!isNaN(testData)&&testData!==Infinity)?(testData>0)?Math.floor(testData):Math.ceil(testData):0;

2. | 取整运算符

console.log(1.3|0); //1

3. >> 取半运算符 

50 >> 1 //25 

50 >> 0 //50

50 >> 2 //12

4.&运算符判断一个数是奇数还是偶数

偶数 & 1 = 0

奇数 & 1 = 1

5. 使用^来完成值交换或者比较两个数是否相等,神奇的异或。。。。

a = 1

b = 2

a ^= b

b ^= a

a ^= b

结果a=2,b=1

顺便列举下几种交换值的方法

1. 借助第三变量,性能通常比另外几种好些

2. 引入对象,利用对象的属性进行交换

3. 利用数组下标

4. 数字的加减法

5. ES6语法,需要支持ES6

相关文章

  • 由大数相加引发的JS中的特殊字符随笔总结

    一个大数相加的思路,膜拜大神 function sumStrings(a,b){ var res='', c...

  • 大数相加算法

    1、题目:实现两个大数相加。2、算法流程:(1)大数可能超出任何一种整数类型,会引发溢出问题,所以用字符串的格式存...

  • js大数相加

    js的数值是有上限的,但是如果我们需要超过上限的数来相加怎么办,这个题也是面试经常会考的一个题。 思路: 1.将传...

  • 字符串模拟大数相加

    题目描述:用字符串模拟两个大数相加。

  • 两个大数相加

    实现两个大数相加 包括字符串和 链表实现。

  • 机试常用算法和题型-大数专题

    大数专题 字符加减关系,实现任意长度整数相加 大数加法,进阶转换版 大数浮点数加法 大数运算之阶乘

  • 大数相加

    大数相加(java) 一、BigDecimal工具类 二、转换为字符串解法

  • js大数相加问题

    一般情况下用js写一个两个数相加的函数很简单,如下: 我们在控制台运行一下,发现打印出了4,没有问题 但是我们改一...

  • JS大数字相加

    问:如何计算大数字的相加?大到可以溢出的那种。 大数字相加,避免使用传统的相加(可能会溢出),所以使用数学题的思路...

  • JAVA之字符串总结

    一、字符串总结 1.字符串和字符串相加 2.字符串和数字相加 3.计算字符串的长度 4.判断字符串是否相等 5.字...

网友评论

      本文标题:由大数相加引发的JS中的特殊字符随笔总结

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