同样是一道面试题,来自有道前端的面试。
写一个函数处理大数据的相加问题,所谓的大数据是指超出了整型,长整型之类的常规数据类型表示范围的数据。实现语言不限。
我是用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:其实吧,这个面试题被我改编了下,原始的面试题主考官提示了用字符串保存大数据的,这个其实降低难度了~~
相关推荐:
apache 二级域名解析实现方法
写出高性能SQL语句的35条方法分析
SQL 随机查询 包括(sqlserver,mysql,access等)
Flex3 界面布局教程
ASP 高级模板引擎实现类
Cython 三分钟入门教程
JQuery 网站换肤功能实现代码
JavaScript 接收键盘指令示例
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
js 验证 常用正则表达式集锦
AJAX 进度条实现代码
drop,truncate与delete的区别
SQLSERVER中union,cube,rollup,cumpute运算符使用说明
asp.net url重写浅谈
js类的静态属性和实例属性的理解
javascript 页面划词搜索JS
颜色快速采集器javascript代码
Oracle 子程序参数模式,IN,OUT,NOCOPY
CSS 伪类实现的鼠标滑动图片链接
编写的vs2005水晶报表程序在vs2008下正常使用的一些实现方法
IIS 配置过程及解决方案 学习小结
jquery tree 可编辑节点实现代码(jquery一句话节点菜单)
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
理解 JavaScript 预解析
C# DoubleClick与MouseDoubleClick区别,双击事件引发顺序
jQuery 使用手册(七)
Windows IIS配置与Ftp服务搭建
Jquery Ajax.ashx 高效分页实现代码
php+javascript的日历控件
JavaScript 基于原型的对象(创建、调用)
json 实例详细说明教程
asp.net 中国身份证号码验证代码 非正则
英文七个发泄句子(转)
JQuery 图片延迟加载并等比缩放插件
FckEditor 中文配置手册
JavaScript 三种创建对象的方法
JavaScript 对话框和状态栏使用说明
javascript 去字符串空格终极版(支持utf8)
Riot.js 快速的JavaScript单元测试框架
域名行业再起波澜 COM降价引发代理狂潮
python 文件和路径操作函数小结
从Oracle 表格行列转置说起第1/2页
PHP 日常开发小技巧
使用regini.exe修改注册表命令
ASP.NET 在线文件管理
javascript 日期常用的方法
提高IIS网站服务器效率的8个方法
Oracle 创建用户及数据表的方法
asp.net 利用IIS的404错误将文件重写成目录的简单方法
asp.net 转换人民币大小金额