zoukankan      html  css  js  c++  java
  • 447. Add Strings

    原文题目:

    447. Add Strings

    解题:

    字符串的当做整数来做加法,其实就是大数加法的简化版本

    思路:

    1)考虑不同位数,如"1234"+“45”,需要先处理低两位,再处理num1的高两位

    2)考虑进位,相加大于10时就要进位,进位值 = sum/10;

    3)考虑最高位的进位,如“5099”+“4987”最后得到了五位的“10086”

    AC代码:

    class Solution {
    public:
    	string addStrings(string num1, string num2) 
    	{
    		string re = "";
    		int len1 = num1.length();
    		int len2 = num2.length();
    		int temp1,temp2,tempsum = 0;
    		string tempstr;
    		int carry = 0;
    		int i = 0;
    		//计算相同位的低位,同时保存进位到carry
    		while(len1&&len2)
    		{
    			temp1 = num1[len1-1]-'0';
    			temp2 = num2[len2-1]-'0';
    			tempsum = temp1 + temp2 + carry;
    			carry = tempsum / 10;
    			tempstr = tempsum%10 + '0';
    			re = tempstr + re; //注意re在后,若为re += tempstr,那么结果就需要翻转了
    			len1--;
    			len2--;
    		}
    		//计算num1或者num2剩余的位
    		if(len1)
    		{
    			for(i = len1-1;i>=0;i--)
    			{
    				tempsum = num1[i]-'0' +carry;
    				carry = tempsum / 10;
    				tempstr = tempsum%10 + '0';
    				re = tempstr + re;
    			}
    		}
    		if(len2)
    		{
    			for(i = len2-1;i>=0;i--)
    			{
    				tempsum = num2[i]-'0' +carry;
    				carry = tempsum / 10;
    				tempstr = tempsum%10 + '0';
    				re = tempstr + re;
    			}
    		}
    		//剩余的位中如果还有进位,那么还需要加上
    		if(carry)
    		{
    			tempstr = carry+'0';
    			re = tempstr +re;
    		}
    		return re;
    	}
    };
    

      

  • 相关阅读:
    aidl 详解
    为什么我选择用 flutter
    hunting
    Dynamic programming
    android 微信开发交流群
    hash function 字符串哈希函数
    函数也可以看成是空间的变换
    语法树
    生活中的物理随处可见
    about coroutine
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8492485.html
Copyright © 2011-2022 走看看