simple_d20190529

1.Add Binary

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        max_len = max(len(a),len(b))
        a = a.rjust(max_len,'0')
        b = b.rjust(max_len,'0')
        in_flag = 0
        s = ''
        for i in range(max_len):
            p = max_len-1-i
            in_flag,num = divmod( int(a[p])+int(b[p])+in_flag,2)
            s = str(num)+s
        if in_flag>0:
            s = str(in_flag)+s
        return s
class Solution:
    def addBinary(self, a: str, b: str) -> str:
        return bin(eval('0b'+a)+eval('0b'+b))[2:]

2.Add to Array-Form of Integer

class Solution:
    def addToArrayForm(self, A: List[int], K: int) -> List[int]:
        for i in range(len(A)-1,-1,-1):
            K, A[i] = divmod(A[i]+K,10)
        if K>0:
            K = [int(i) for i in str(K)]
            K.extend(A)
            return K
        else:
            return A

3. Add Strings

class Solution:
   def addStrings(self, num1: str, num2: str) -> str:
       max_len = max(len(num1),len(num2))
       num1 = num1.rjust(max_len,'0')
       num2 = num2.rjust(max_len,'0')
       s = ''
       carry = 0
       for i in range(max_len-1,-1,-1):
           carry,num = divmod(int(num1[i])+int(num2[i])+carry,10)
           s = str(num)+s
       if carry>0:
           s = str(carry)+s
       return s

4. Add Two Numbers

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        res_node = ListNode(0)
        p = res_node
        carry = 0
        while l1 or l2 or carry:
            v1=v2=val=0
            if l1:
                v1=l1.val
                l1=l1.next
            if l2:
                v2=l2.val
                l2=l2.next
            carry,val = divmod(v1+v2+carry,10)
            p.next = ListNode(val)
            p=p.next
        return res_node.next

5. Add Two Numbers II

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        '''
        1.用栈的方法
        '''
        s1 = []
        s2 = []
        head = ListNode(0)
        while l1:
            s1.append(l1.val)
            l1 = l1.next
        while l2:
            s2.append(l2.val)
            l2 = l2.next
        carry = 0
        res_node = ListNode(0)
        p = res_node
        while s1 or s2 or carry:
            v1=v2=val=0
            if s1:
                v1 = s1.pop()
            if s2:
                v2 = s2.pop()
            carry,val = divmod(v1+v2+carry,10)
            head.val = val
            tmp = head
            head = ListNode(0)
            head.next = tmp
            
        return head.next
        
class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        '''
        2.直接用数字加和
        '''
        num1 = 0
        while l1:
            num1 = num1*(10)+l1.val
            l1 = l1.next
            
        num2 = 0
        while l2:
            num2 = num2*(10)+l2.val
            l2 = l2.next
        
        num = num1+num2
        head = ListNode(0)
        p = head
        s = str(num)
        for i in range(len(s)):
            node = ListNode(int(s[i]))
            p.next=node
            p = p.next
        return head.next
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,196评论 0 10
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 7,982评论 0 3
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 13,230评论 0 13
  • 今天5月2号,继续休息,和好友们相约带孩子出去野炊,现在出于环境保护的原因,政府不允许随便在郊外进行烧烤。 不过这...
    jingjing静静阅读 1,306评论 0 0
  • “你住的城市下雨了,很想问你有没有带伞,可是我忍住了。因为我怕你说没带,而我又无能为力,就像是我爱你,有给不了你你...
    明天再说啦啦啦阅读 1,661评论 0 0

友情链接更多精彩内容