[LeetCode&Python] Problem 415. Add Strings

Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.

Note:

  1. The length of both num1 and num2 is < 5100.
  2. Both num1 and num2 contains only digits 0-9.
  3. Both num1 and num2 does not contain any leading zero.
  4. You must not use any built-in BigInteger library or convert the inputs to integer directly.
class Solution(object):
    def addStrings(self, num1, num2):
        """
        :type num1: str
        :type num2: str
        :rtype: str
        """
        def str2num(i):
            if i=='0':
                return 0
            elif i=='1':
                return 1
            elif i=='2':
                return 2
            elif i=='3':
                return 3
            elif i=='4':
                return 4
            elif i=='5':
                return 5
            elif i=='6':
                return 6
            elif i=='7':
                return 7
            elif i=='8':
                return 8
            elif i=='9':
                return 9
        
        def num2str(i):
            if i==0:
                return '0'
            elif i==1:
                return '1'
            elif i==2:
                return '2'
            elif i==3:
                return '3'
            elif i==4:
                return '4'
            elif i==5:
                return '5'
            elif i==6:
                return '6'
            elif i==7:
                return '7'
            elif i==8:
                return '8'
            elif i==9:
                return '9'
            
        addone=0
        ans=""
        num1=num1[::-1]
        num2=num2[::-1]
        if len(num2)>len(num1):
            temp=num1
            num1=num2
            num2=temp
        for i in range(len(num1)):
            if i<len(num2):
                n1=str2num(num1[i])
                n2=str2num(num2[i])
                s=n1+n2+addone
                s0=s%10
                ans+=num2str(s0)
                if s>=10:
                    addone=1
                else:
                    addone=0
            else:
                n1=str2num(num1[i])
                s=n1+addone
                s0=s%10
                ans+=num2str(s0)
                if s>=10:
                    addone=1
                else:
                    addone=0
        if addone==1:
            ans+='1'
        return ans[::-1]
                    
            

  

posted on 2018-12-23 16:26  chiyeung  阅读(92)  评论(0编辑  收藏  举报

导航