当前位置: 首页 > news >正文

两个长整数字符串求和(不允许使用ES6+)

两个长整数字符串求和(不允许使用ES6+), 面试手撸代码遇到到这个问题

1. 实现方式第一种

// 短整数字符串前边补 '0'; num需要补 '0' 的短整数字符串, len 长整数字符串的长度  
function fillZero (num, len) {let str = num.toString();if (str.length < len) {str = '0'.repeat(len - str.length) + str;}return str;}// 处理相加大于等于10进制问题; num1, num2 两个长度一样的长整数字符串function handlerCarry (num1, num2) {let arr = []for (let i = 0; i < num1.length; i++) {arr.push(Number(num1[i]) + Number(num2[i]))}arr = arr.reverse()arr.forEach((item, index) => {// console.log(item)if (item >= 10) {arr[index] = item - 10arr[index + 1] = arr[index + 1] ? arr[index + 1] + 1 : 1}})// console.log(arr)return arr.reverse().join('')}// 处理两个长整数字符串相加后返回结果字符串; num1, num2 长度不一定相等的两个长整数字符串function longIntStrSum (num1, num2) {let str = ''let len1 = num1.length;let len2 = num2.length;if (len1 < len2) {num1 = fillZero(num1, len2)} else if (len1 > len2) {num2 = fillZero(num2, len1)}str = handlerCarry(num1, num2)return str}let num1 = '123412412'let num2 = '967354215'console.log(longIntStrSum(num1, num2))

2. 借鉴他人的代码实现两个长整数字符串相加

function sumStrings (a, b) {var result = [], count = 0;if (a.length < b.length) b = [a, a = b][0];b = Array(a.length - b.length + 1).join('0') + b;var arrA = a.split('');var arrB = b.split('');for (var j = 0; j < a.length; j++) {var temp = (Number(arrA.pop()) + Number(arrB.pop())) + count;temp >= 10 ? [temp, count] = [temp - 10, 1] : count = 0;result.push(temp);}result.push(count);return result.reverse().join('').replace(/^0+/, '');
}
let sum = sumStrings('1234', '456789')
console.log(sum) // 458023
http://www.lryc.cn/news/431334.html

相关文章:

  • 11 Java 方法引用、异常处理、Java接口之函数式编程(接口知识补充Function<T,R>、BiFunction<T, U, R>和自定义泛型接口)
  • 深入探索 Go 语言的编译器与垃圾回收机制
  • 2024国赛数学建模-模拟火算法(MATLAB 实现)
  • YOLOv8 只检测人 只画框不要标签
  • 如何将网络安全防范游戏化
  • Qt QGraphicsView实现图片放缩、鼠标拖动移动、鼠标点位置放大缩小_图片查看
  • Percona Toolkit 神器全攻略(复制类)
  • SQLite3 数据类型深入全面讲解
  • Python高效实现Trie(前缀树)及其插入和查找操作
  • 傅里叶变换家族
  • 深度学习——强化学习算法介绍
  • 轴承知识大全,详细介绍(附3D图纸免费下载)
  • 【PyTorch】基础环境如何打开
  • QT教程:QTime和QTimer的使用场景
  • MySQL 迁移中 explicit_defaults_for_timestamp 参数影响
  • 树状数组记录
  • 客户端时间和服务器时间的区别
  • 已入职华为!!关于我成功拿下华为大模型算法岗经验总结
  • 从安卓开发到AI产品经理——我的AI绘画之旅
  • 代码随想录八股训练营第三十四天| C++
  • 《深入理解 Java 中的 this 关键字》
  • python文件自动分类(5)
  • 【Unity-Lua】音乐播放器循环滚动播放音乐名
  • 宏碁扩展Swift系列,推出四款全新AI笔记本电脑
  • 科研绘图系列:R语言差异基因四分图(Quad plot)
  • 文字或图案点选坐标点返回
  • 硬盘数据恢复软件TOP4榜单出炉,选对方法竟然如此重要
  • 给自己复盘用的随想录笔记-栈与队列
  • 微信小程序跳转到另一个微信小程序
  • 【知识图谱】4、LLM大模型结合neo4j图数据库实现AI问答的功能