JavaScript 大数据相加的问题

同样是一道面试题,来自有道前端的面试。
写一个函数处理大数据的相加问题,所谓的大数据是指超出了整型,长整型之类的常规数据类型表示范围的数据。实现语言不限。
我是用js实现的,说一下我自己的思路:
1、首先这个题目最重要的环节在考虑怎么存储大数据?用什么数据类型保存呢?最简单可行的方式是String
2、确定了使用何种类型保存数据之后这个题目就明朗了。首先判断两个传入字符串的长度,取最短的len循环,两者从低位开始对应位相加,同时注意保存进位。在短的数据处理完后,将进位交给较长串的剩余部分处理。
详细实现看一下代码,完整实例见jsfiddle


代码如下:

var strAdd = function(srcA, srcB) {
var i, temp, tempA, tempB, len, lenA, lenB, carry = 0;
var res = [],
arrA = [],
arrB = [],
cloneArr = [];
arrA = srcA.split('');
arrB = srcB.split('');
arrA.reverse();
arrB.reverse();
lenA = arrA.length;
lenB = arrB.length;
len = lenA > lenB ? lenB : lenA;
for (i = 0; i < len; i++) {
tempA = parseInt(arrA[i], 10);
tempB = parseInt(arrB[i], 10);
temp = tempA + tempB + carry;
if (temp > 9) {
res.push(temp - 10);
carry = 1;
} else {
res.push(temp);
carry = 0;
}
}
cloneArr = lenA > lenB ? arrA : arrB;
for (; i < cloneArr.length; i++) {
tempA = parseInt(cloneArr[i], 10);
temp = tempA + carry;
if (temp > 9) {
res.push(temp - 10);
carry = 1;
} else {
res.push(temp);
carry = 0;
}
}
return (res.reverse()).join('');
};

以上。
PS:其实吧,这个面试题被我改编了下,原始的面试题主考官提示了用字符串保存大数据的,这个其实降低难度了~~

(0)

相关推荐

  • JavaScript 大数据相加的问题

    同样是一道面试题,来自有道前端的面试. 写一个函数处理大数据的相加问题,所谓的大数据是指超出了整型,长整型之类的常规数据类型表示范围的数据.实现语言不限. 我是用js实现的,说一下我自己的思路: 1.首先这个题目最重要的环节在考虑怎么存储大数据?用什么数据类型保存呢?最简单可行的方式是String 2.确定了使用何种类型保存数据之后这个题目就明朗了.首先判断两个传入字符串的长度,取最短的len循环,两者从低位开始对应位相加,同时注意保存进位.在短的数据处理完后,将进位交给较长串的剩余部分处理.

  • JavaScript的数据类型转换原则(干货)

    我们都知道JavaScript是一门弱类型(或称动态类型)的语言,即变量的类型是不确定的. var num = 123 ; //123 var num = 'HAHAHA' + num ; // "HAHAHA123" 上面的代码中,变量num起初是一个数值,后来又变成一个字符串.变量类型完全由当前值决定.这种类型就叫弱类型. 我们知道,在编程语言中,数据本身和运算之间都是有类型的. 在强类型的编程语言中,不同类型的变量是不能直接进行运算的. 但是在弱类型语言中不同类型的变量却是可以直

  • jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)

    select2是一款jQuery插件,是普通form表单select组件的升级版. 可以定制搜索.远程数据集(Remote data,本篇主要介绍点).无限滚动(数据分页功能,这一点很妙).还有很多高端的参数设置(有需要的下次介绍). 内置了40种国际化语言,不过这里我们只需要用到中文. 同时支持现代和传统浏览器内置,甚至包括惹人不高兴的IE8. 那么,现在让我们开始一段select2的奇幻之旅吧! 一.惊艳的效果,来一睹为快吧 本地实战结果 二.导入css和js到网站上 1.使用CDN,节省自

  • 分享4个最受欢迎的大数据可视化工具

    想像阅读书本一样阅读数据流?这只有在电影中才有可能发生. 在现实世界中,企业必须使用数据可视化工具来读取原始数据的趋势和模式. 大数据可视化是进行各种大数据分析解决的最重要组成部分之一. 一旦原始数据流被以图像形式表示时,以此做决策就变得容易多了. 为了满足并超越客户的期望,大数据可视化工具应该具备这些特征: ·      能够处理不同种类型的传入数据 ·      能够应用不同种类的过滤器来调整结果 ·      能够在分析过程中与数据集进行交互 ·      能够连接到其他软件来接收输入数据

  • Python大数据用Numpy Array的原因解读

    目录 1.内存占用更小 2.速度更快.内置计算方法 Numpy 是Python科学计算的一个核心模块.它提供了非常高效的数组对象,以及用于处理这些数组对象的工具.一个Numpy数组由许多值组成,所有值的类型是相同的. Python的核心库提供了 List 列表.列表是最常见的Python数据类型之一,它可以调整大小并且包含不同类型的元素,非常方便. 那么List和Numpy Array到底有什么区别?为什么我们需要在大数据处理的时候使用Numpy Array?答案是性能. Numpy数据结构在以

  • SpringBoot+Thymeleaf+ECharts实现大数据可视化(基础篇)

    目录 0x01 新建SpringBoot项目 2. 编写HelloWorld程序代码 0x02 引入ECharts资源 1. 获取JQuery与ECharts资源 2. 新建ECharts模版html文件 3. 添加后台java代码 4. ECharts模版样式预览 0x03 SpringBoot整合Thymeleaf 1. 新建myECharts方法 2. 引入Thymeleaf 3. ECharts新样式预览 4. 模式升级 0xFF 总结 0x01 新建SpringBoot项目 1. 新建

  • Sqlserver 高并发和大数据存储方案

    随着用户的日益递增,日活和峰值的暴涨,数据库处理性能面临着巨大的挑战.下面分享下对实际10万+峰值的平台的数据库优化方案.与大家一起讨论,互相学习提高! 案例:游戏平台. 1.解决高并发 当客户端连接数达到峰值的时候,服务端对连接的维护与处理这里暂时不做讨论.当多个写请求到数据库的时候,这时候需要对多张表进行插入,尤其一些表 达到每天千万+的存储,随着时间的积累,传统的同步写入数据的方式显然不可取,经过试验,通过异步插入的方式改善了许多,但与此同时,对读取数据的实时性也需要做一定的牺牲. 异步的

  • Oracle的CLOB大数据字段类型操作方法

    一.Oracle中的varchar2类型 我们在Oracle数据库存储的字符数据一般是用VARCHAR2.VARCHAR2既分PL/SQL Data Types中的变量类型,也分Oracle Database中的字段类型,不同场景的最大长度不同. 在Oracle Database中,VARCHAR2 字段类型,最大值为4000:PL/SQL中 VARCHAR2 变量类型,最大字节长度为32767. 当 VARCHAR2 容纳不下我们需要存储的信息时,就出来的Oracle的大数据类型LOB( La

  • 如何将Oracle的一个大数据表快速迁移到 Sqlserver2008数据库(图文教程)

    oracle 服务器  版本  11.2.0.1.0 Sqlserver2008  R2 前提条件是 SQLSERVER服务器上安装了Oracle客户端并且进行了配置 不会配置的请参照 这个链接 1  登录MSSM 工具 2 选中其中一个数据库  右键⇒任务⇒导入数据 3   打开窗口 Sqlserver导入和导出向导   点击下一步 4 进入选择数据源画面 a: 数据源 选择  Microsoft OLE DB Provider for Oracle  然后 点击 右侧的 属性 按钮 5  数

  • 大数据量时提高分页的效率

    如我们在之前的教程里讨论的那样,分页可以通过两种方法来实现: 默认分页– 你仅仅只用选中data Web control的 智能标签的Enable Paging ; 然而,当你浏览页面的时候,虽然你看到的只是一小部分数据,ObjectDataSource 还是会每次都读取所有数据 自定义分页– 通过只从数据库读取用户需要浏览的那部分数据,提高了性能. 显然这种方法需要你做更多的工作. 默认的分页功能非常吸引人,因为你只需要选中一个checkbox就可以完成了.但是它每次都读取所有的数据,这种方式

随机推荐