zltzlt 发表于 2020-2-29 19:23:28

Python:每日一题 339

今天的题目:

给定两个仅含数字的字符串 a 和 b,返回一个由各位之和拼接成的字符串。   

示例 1:

输入:a = "99", b = "111"
输出:"11010"
解释:因为 9 + 1 = 10,9 + 1 = 10,0 + 1 = 1,连接之后的结果是 "11010"。
示例 2:

输入:a = "2",b = "321"
输出:"323"
解释:因为 1 + 2 = 3,2 + 0 = 2,3 + 0 = 3,连接之后的结果是 "323"。

{:10_298:}欢迎大家一起答题!{:10_298:}

冬雪雪冬 发表于 2020-2-29 19:43:08

拼接是从右到左?

最后的魁拔 发表于 2020-2-29 19:45:18

本帖最后由 最后的魁拔 于 2020-2-29 19:47 编辑

a = list(input())
b = list(input())
if len(a)==len(b):
    c = max(len(a),len(b))
    pass

else:
    c = max(len(a),len(b))
    if len(a)>len(b):
      d = c-len(b)
      for i in range(0,d):
            b.insert(i,0)
    else:
      d = c - len(a)
      for i in range(0,d):
            a.insert(i,0)
str1=""
for i in range(0,c):
    str1 += str(int(a)+int(b))
print(str1)

蒋博文 发表于 2020-2-29 19:45:30

冬雪雪冬 发表于 2020-2-29 19:43
拼接是从右到左?

就是十位和十位上的数相加,个位和个位上的数相加,如果位上没有数,加的时候就用零来代替

zltzlt 发表于 2020-2-29 19:47:21

本帖最后由 zltzlt 于 2020-2-29 19:54 编辑

冬雪雪冬 发表于 2020-2-29 19:43
拼接是从右到左?

不是,跟做加法类似

   99
+ 111
-----------
1 10 10

zltzlt 发表于 2020-2-29 19:51:35

最后的魁拔 发表于 2020-2-29 19:45


114 ms

wuqramy 发表于 2020-2-29 19:53:44

a = input('a = ')
b = input('b = ')
c = ''
if len(a) == len(b):
    for i in range(len(a)):
      c += str(int(a) + int(b))
else:
    if len(a) > len(b):
      for i in range(len(a) - len(b)):
            b = '0' + b
      for i in range(len(a)):
            c += str(int(a) + int(b))
    else:
      for i in range(len(b) - len(a)):
            a = '0' + a
      for i in range(len(a)):
            c += str(int(a) + int(b))
print(c)

好像没问题...

zltzlt 发表于 2020-2-29 19:55:03

wuqramy 发表于 2020-2-29 19:53
好像没问题...

38 ms

wuqramy 发表于 2020-2-29 19:57:01

zltzlt 发表于 2020-2-29 19:55
38 ms

什么意思呢

zltzlt 发表于 2020-2-29 19:57:41

wuqramy 发表于 2020-2-29 19:57
什么意思呢

测试用例运行时长 38 毫秒

冬雪雪冬 发表于 2020-2-29 19:58:34

def func(a, b):
    result = ''
    n1 = len(a)
    n2 = len(b)
    a = '0' * (n2 - n1) + a
    b = '0' * (n1 - n2) + b
    for x, y in zip(a, b):
      result += str(int(x) + int(y))
    return result

wuqramy 发表于 2020-2-29 19:59:45

zltzlt 发表于 2020-2-29 19:57
测试用例运行时长 38 毫秒

{:10_323:}明白了

zltzlt 发表于 2020-2-29 20:00:00

冬雪雪冬 发表于 2020-2-29 19:58


28 ms

ArmandXiao 发表于 2020-2-29 20:02:44

def _339(a, b):
    list1 = []
    list2 = []

    for i in a:
      list1.append(int(i))
    for i in b:
      list2.append(int(i))
    if len(b) > len(a):
      for i in range(len(b) - len(a)):
            list1.insert(0, 0)
    if len(a) > len(b):
      for i in range(len(a) - len(b)):
            list2.insert(0, 0)
    str1 = ""

    for i in zip(list1, list2):
      str1 = str1 + str(sum(i))
    return str1
请过目

zltzlt 发表于 2020-2-29 20:03:23

ArmandXiao 发表于 2020-2-29 20:02
请过目

124 ms

塔利班 发表于 2020-2-29 20:18:13

def f339(a,b):
    def f(a,b):
      if not a or not b:
            return a+b
      else:
            return f(a[:-1],b[:-1])+str(int(a[-1])+int(b[-1]))
    return f(a,b)

xqq1984 发表于 2020-2-29 20:21:34

a = input('第一个数字: ')
b = input('第二个数字: ')
a1 = len(a)
b1 = len(b)
if a1 < b1:
    a3 = b1 - a1
    a5 = len(b) - a3
    i = 1
    a4 = []
    while i <= a5:
      a2 = (int(a[-i]) + int(b[-i]))
      a4.append(str(a2))
      i += 1
    a6 = len(b) - len(a)
    i = 0
    while i < a6:
      a4.append((b))
      i += 1
    a4 = sorted(a4)
    a7 = ''.join(a4)
    print(a7)

zltzlt 发表于 2020-2-29 20:23:53

塔利班 发表于 2020-2-29 20:18


如果用递归则不能处理过大的数据

zltzlt 发表于 2020-2-29 20:24:30

xqq1984 发表于 2020-2-29 20:21


没有考虑 a1 >= b1 的情况

ArmandXiao 发表于 2020-2-29 20:25:01

冬雪雪冬 发表于 2020-2-29 19:58


太强大了
页: [1] 2 3 4
查看完整版本: Python:每日一题 339