- 关键在于预分配string的内存
写法1,很慢,打败11%
func addStrings(num1 string, num2 string) string {
la := len(num1)
lb := len(num2)
if lb > la{
num1,num2 = num2,num1
la,lb = lb,la
}
var(
ans string
tmp byte = 0
achar byte
bchar byte
)
for i:=1;i<=lb;i++{
achar = num1[la-i] - '0'
bchar = num2[lb-i] - '0'
ans = string((achar+bchar+tmp)%10 + '0') + ans
tmp = (achar+bchar+tmp)/10
}
for i:=la-lb-1;i>=0;i--{
achar = num1[i] - '0'
ans = string((achar+tmp)%10 + '0') + ans
tmp = (achar+tmp)/10
}
if tmp != 0{
ans = string(tmp + '0') + ans
}
return ans
}
写法2,打败100%
func addStrings(num1 string, num2 string) string {
la := len(num1)
lb := len(num2)
if lb > la{
num1,num2 = num2,num1
la,lb = lb,la
}
var(
ans = make([]byte,la+1)
tmp byte = 0
achar byte
bchar byte
)
for i:=1;i<=lb;i++{
achar = num1[la-i] - '0'
bchar = num2[lb-i] - '0'
ans[la-i+1] = (achar+bchar+tmp)%10 + '0'
tmp = (achar+bchar+tmp)/10
}
for i:=la-lb-1;i>=0;i--{
achar = num1[i] - '0'
ans[i+1] = (achar+tmp)%10 + '0'
tmp = (achar+tmp)/10
}
if tmp != 0{
ans[0] = tmp + '0'
return string(ans)
}
return string(ans[1:])
}