LeetCode 415. Add Strings题解 字符串加和
来源:互联网 发布:服务器带宽测试软件 编辑:程序博客网 时间:2024/05/01 13:45
Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2.
Note:
- The length of both num1 and num2 is < 5100.
- Both num1 and num2 contains only digits 0-9.
- Both num1 and num2 does not contain any leading zero.
- You must not use any built-in BigInteger library or convert the inputs to integer directly.
由于是参加LeetCode的Weekly Contest,水平不够,在线编的代码比较差(哈哈,忍忍吧~~)。0~9的ASCII码是48~57,并且我们是对单独每一位做加法运算,所以,对两个字符求和转换成数字时直接取余“%96”,对一个字符转换成数字时取余“%48”。
分析:
1. num1和num2的相同位,可以直接加减并加上进位(进位用flag标记,当后位有进位时取值1,无进位时取值为0),例如12和34,1+3+falg、2+4+flag即可;
2. num1和num2的不同位,直接用对应位加上后一位的进位就可以,例如112和89,十位求和后进位flag=1,对百位直接用num1的百位1+flag;
3. num1和num2
4. 由于算数是从个位开始计算,但是个位与string对应的是最后一位,所以计算的时候需要从string的最后一位开始计算。
class Solution {public: string addStrings(string num1, string num2) { int len1 = num1.length(); int len2 = num2.length(); int temp = 0, flag = 0; int len = max(len1, len2); string s(len,'\0'); for (int i = 0; i<min(len1, len2); i++){ //相同位计算 temp = (num1[len1-1-i] + num2[len2-1-i]) % 96; if (flag){ temp++; flag = 0; } s[len-1-i]= '0'+temp % 10; if (temp > 9){ flag = 1; } } string ls; if (len1 > len2){//判断哪一个数位长 ls = num1; } else{ ls = num2; } int lenG = len - min(len1, len2); for (int i = 0; i <lenG; i++){//计算不同位 temp = ls[lenG-1-i] % 48; if (flag){ temp ++; flag = 0; } s[lenG-1-i] = '0' + temp % 10; if (temp > 9){ flag = 1; } } if (flag){ //最高位是否进位 s = '1'+s; } return s; }};
0 0
- LeetCode 415. Add Strings题解 字符串加和
- leetcode 415. Add Strings字符串加和(C++和Java)
- 【leetcode 题解】415. Add Strings【E】
- LeetCode 415. Add Strings 题解(C++)
- leetcode 415. Add Strings 字符串加法
- Leetcode-415. Add Strings
- LeetCode 415. Add Strings
- [LeetCode]--415. Add Strings
- LeetCode 415. Add Strings
- LeetCode 415. Add Strings
- LeetCode 415. Add Strings
- leetcode 415. Add Strings
- 【LeetCode】 415. Add Strings
- LeetCode 415. Add Strings
- Leetcode 415. Add Strings
- LeetCode - 415. Add Strings
- LeetCode 415. Add Strings
- Leetcode 415. Add Strings
- JAVA中FILE类的一些常用API
- JQuery Mobile跳转页面后css和js失效
- under control
- glFinish()和glFlush()函数详解
- Numpy reshape用法
- LeetCode 415. Add Strings题解 字符串加和
- EJB——实体Bean
- fast-rcnn配置运行demo.py(Ubuntu14.04)
- 使用gradle开启multiDex时,如何配置MainDex
- socket创建过程
- POJ 3233
- poj1804 归并排序求逆序对
- befor-after两个伪元素
- const 和 #define区别