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类型的9:ord('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字符串相加的主要内容,如果未能解决你的问题,请参考以下文章