大整数加法-LintCode
来源:互联网 发布:js 时间格式转换 编辑:程序博客网 时间:2024/05/21 10:31
以字符串的形式给出两个非负整数 num1 和 num2,返回 num1 和 num2 的和。
注意事项:
- num1 和 num2 的长度都小于5100。
- num1 和 num2 都只包含数字 0-9。
- num1 和 num2 都不包含任何前导零。
- 您不能使用任何内置的BigInteger库内的方法或直接将输入转换为整数。
样例:
给定 num1 = “123”,num2 = “45”
返回 “168”
#ifndef C655_H#define C655_H#include<iostream>#include<string>using namespace std;class Solution {public: /* * @param num1: a non-negative integers * @param num2: a non-negative integers * @return: return sum of num1 and num2 */ string addStrings(string &num1, string &num2) { // write your code here if (num1.empty()) return num2; if (num2.empty()) return num1; string dic("0123456789"); string str; int len1 = num1.size(); int len2 = num2.size(); //为了方便计算,在较短的字符串前面填充0 if (len1 > len2) { int cnt = len1 - len2; for (int i = 0; i < cnt; ++i) num2 = "0" + num2; } else { int cnt = len2 - len1; for (int i = 0; i < cnt; ++i) num1 = "0" + num1; } int i = num1.size() - 1; bool flag = false; //计算每一位相加的值,并判断进位情况 while (i >= 0) { int num = (num1[i] - '0') + (num2[i] - '0'); if (flag) { if (num + 1 >= 10) { str = dic[num + 1 - 10] + str; flag = true; } else { str = dic[num + 1] + str; flag = false; } } else { if (num >= 10) { str = dic[num - 10] + str; flag = true; } else { str = dic[num] + str; flag = false; } } --i; } if (flag) str = "1" + str; return str; }};#endif
阅读全文
0 0
- 大整数加法-LintCode
- 【LintCode-655】大整数加法(Java实现)
- 大整数加法
- 大整数加法
- 高精度 大整数加法
- 大整数加法
- 大整数加法
- 大整数加法
- 大整数加法
- 大整数加法计算
- zoj1292大整数加法
- 大整数加法
- 大整数加法
- 大整数加法函数
- 大整数加法
- 大整数加法
- 大整数加法
- 大整数加法
- 奇怪的 io_service--- accepter handler 没有启动
- ElasticSearch环境搭建与运行
- 计算机等级考试--二级C语言2
- eclipse修改改类头注释内容
- JAVA垃圾回收机制
- 大整数加法-LintCode
- 对于技术选择的迷茫
- BZOJ1087 [SCOI2005]互不侵犯King 状压DP
- log4j日志桥接到logback
- HDOJ2099 整除的尾数
- 如何在 ImageNet 比赛中获得冠军?
- PHP的八种数据类型
- 线程池的核心实现
- 关于android studio配置问题与android sdk