首页 > 试题广场 >

字符串加法

[编程题]字符串加法
  • 热度指数:5770 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解


输入两个字符串a和b,字符串内容为二进制数字,求两个字符串相加的结果,加法计算方法以二进制方式计算,并返回对应的字符串结果。要求程序尽可能的高效。示例如下:
/**
*
@param a = "1101"
*
@param b = "1100"
*
@return "11001"
*/
public String add(String a, String b){ }

数据范围:

输入描述:
输入两个字符串,如"1101", "1100"


输出描述:
"11001"
示例1

输入

1101 1100

输出

11001
示例2

输入

0 1

输出

1
def add_8(a,b):
    while len(a) < len(b):
        tem = a
        a = b
        b = tem
    a = a[::-1]
    b = b[::-1]
    while len(b) != len(a):
        b = str(b)+"0"
    inx = 0
    sum_8 = ""
    i = 0
    while i<len(a):
        sum_8 = sum_8+str((int(a[i]) + int(b[i]) + inx)%2)
        if (int(a[i]) + int(b[i]) + inx) > 1:
            inx = 1
        else:
            inx = 0
        i += 1
    if inx ==1:
        sum_8 = sum_8+"1"
    return sum_8[::-1]
a, b = input().split()
t=add_8(str(a),str(b))
print(t)
发表于 2020-03-23 23:05:19 回复(0)
python一行系列
print(bin(sum([int(x,2) for x in input().split()]))[2:])


发表于 2019-12-28 11:12:53 回复(0)
import sys
a,b=list(map(int,sys.stdin.readline().split()))
plus=list(str(a+b))
res=[]
for i in range(len(plus)-1,-1,-1):
    if int(plus[i])<=1:
        res.insert(0,plus[i])
    elif int(plus[i])>=2:
        res.insert(0,str(int(plus[i])-2))
        plus[i-1]=str(int(plus[i-1])+1)
if int(plus[0])>=2:
    res.insert(0,'1')
print(int(''.join(res)))

发表于 2019-09-15 11:23:08 回复(0)
str1, str2 = input().split()
flag = 0
i = 0
j = 0
new_str = ""
while i < len(str1) and j < len(str2):
    a1 = int(str1[-(i+1)])
    a2 = int(str2[-(j+1)])
    if a1 + a2 + flag == 0:
        flag = 0
        new_str = "0" + new_str
    elif a1 + a2 + flag == 1:
        flag = 0
        new_str = "1" + new_str
    elif a1 + a2 + flag == 2:
        flag = 1
        new_str = "0" + new_str
    else:
        flag = 1
        new_str = "1" + new_str
    i += 1
    j += 1
while i < len(str1):
    a1 = int(str1[-(i+1)])
    if a1 + flag == 0:
        flag = 0
        new_str = "0" + new_str
    elif a1 + flag == 1:
        flag = 0
        new_str = "1" + new_str
    else:
        flag = 1
        new_str = "0" + new_str
    i += 1
while j < len(str2):
    a2 = int(str2[-(j+1)])
    if a2 + flag == 0:
        flag = 0
        new_str = "0" + new_str
    if a2 + flag == 1:
        flag = 0
        new_str = "1" + new_str
    else:
        flag = 1
        new_str = "0" + new_str
    j += 1
if flag == 1:
    new_str = "1" + new_str
print(new_str)

发表于 2019-08-30 21:01:42 回复(0)
arr = list(map(str, input().split()))
num1 = arr[0]; num2 = arr[1]
number1 = int('0b'+num1, 2)
number2 = int('0b'+num2, 2)
total = number1+number2 print(bin(total)[2:])
发表于 2019-08-25 19:17:13 回复(0)
""""
进制间转换
↓          2进制             8进制             10进制            16进制

2进制          -          bin(int(x, 8))    bin(int(x, 10))    bin(int(x, 16))

8进制   oct(int(x, 2))           -          oct(int(x, 10))    oct(int(x, 16))

10进制  int(x, 2)         int(x, 8)                 -          int(x, 16)

16进制  hex(int(x, 2))    hex(int(x, 8))    hex(int(x, 10))      -
"""

if __name__ == "__main__":
    a = [int(x, 2) for x in input().strip().split()]
    print(str(bin(sum(a)))[2:])

发表于 2019-07-12 11:42:08 回复(0)