package main
var intMap = map[byte]int{
byte('0'): 0,
byte('1'): 1,
byte('2'): 2,
byte('3'): 3,
byte('4'): 4,
byte('5'): 5,
byte('6'): 6,
byte('7'): 7,
byte('8'): 8,
byte('9'): 9,
}
var byteMap = map[int]byte{
0: byte('0'),
1: byte('1'),
2: byte('2'),
3: byte('3'),
4: byte('4'),
5: byte('5'),
6: byte('6'),
7: byte('7'),
8: byte('8'),
9: byte('9'),
}
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
func solve(s string, t string) string {
// write code here
ls := len(s)
lt := len(t)
minl := ls
maxStr := t
if lt < ls {
minl = lt
maxStr = s
}
flag := 0
out := make([]byte, 0, len(maxStr)+1)
for i := 0; i < minl; i++ {
a := intMap[s[ls-1-i]]
b := intMap[t[lt-1-i]]
tmp := a + b + flag
if tmp >= 10 {
flag = 1
out = append(out, byteMap[tmp%10])
continue
}
flag = 0
out = append(out, byteMap[tmp])
}
for i := minl; i < len(maxStr); i++ {
n := intMap[maxStr[len(maxStr)-1-i]]
tmp := n + flag
if tmp >= 10 {
flag = 1
out = append(out, byteMap[tmp%10])
continue
}
flag = 0
out = append(out, byteMap[tmp])
}
if flag != 0 {
out = append(out, byteMap[1])
}
bs := make([]byte, 0, len(out))
for i := range out {
bs = append(bs, out[len(out)-1-i])
}
return string(bs)
}