leetcode简单415字符串相加

Posted qq_40707462

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode简单415字符串相加相关的知识,希望对你有一定的参考价值。

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
思路:双指针,一次循环

class Solution(object):
    def addStrings(self, num1, num2):
        i,j=len(num1)-1,len(num2)-1
        res=''
        carry=0
        while i>=0 or j>=0 or carry:#注意1+9=10的情况,要补上进位
            a=int(num1[i]) if i>=0 else 0
            b=int(num2[j]) if j>=0 else 0
            tmp=a+b+carry
            carry=tmp//10
            res=str(tmp%10)+res
            i-=1
            j-=1
        return res

除了应int()强制转换,还可以:

"9" 如何获得ASCII码:ord('9') ==> 57
ord('0')=48
ord('a')=97
"9" 如何获得int类型的9ord('9')-ord('0')
根据ASCII码获得字符串:chr(97)-->a

拓展:36进制加法

36进制由0-9,a-z,共36个字符表示。

要求按照加法规则计算出任意两个36进制正整数的和,如
1b + 2x = 48 (解释:47+105=152)

def addStrings(num1, num2):
    i, j = len(num1) - 1, len(num2) - 1
    res = ''
    carry = 0
    while i >= 0 or j >= 0 or carry:
        a = getInt(num1[i]) if i >= 0 else 0
        b = getInt(num2[j]) if j >= 0 else 0
        tmp = a + b + carry
        carry = tmp // 36
        res =getChar(tmp % 36)+res
        i -= 1
        j -= 1
    return res

def getChar(n):
    if n<=9:
        return str(n)
    else:
        return chr(n-10+ord('a'))
def getInt(c):
    if ord('0')<=ord(c)<=ord('9'):
        return ord(c)-ord('0')
    else:
        return ord(c)-ord('a')+10

num1,num2="1b","2x"
print(addStrings(num1,num2))

以上是关于leetcode简单415字符串相加的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode]415. 字符串相加43. 字符串相乘

LeetCode415 字符串相加

Leetcode 415 字符串相加

leetcode415---字符串大数相加

LeetCode: 415. 字符串相加

精选力扣500题 第26题 LeetCode 415. 字符串相加c++ / java 详细题解