leetcode"/>
《leetcode
给出两个用字符串表示的二进制数,返回他们的和(也用字符串表示)
例如:
a ="11"
b ="1"
返回"100".
思路:字符串按位转化为数字,然后从低位开始,求出结果根据二进制判断是否进1,然后结果依次拼接。注意两个字符串的长短差异。
package main
import ("strconv""strings"
)/*** * @param a string字符串 * @param b string字符串 * @return string字符串
*/
func addBinary( a string , b string ) string {// write code hereaList := strings.Split(a, "")bList := strings.Split(b, "")aLen := len(aList)bLen := len(bList)var longList []stringvar shortList []stringvar longLen intvar shortLen intif aLen >= bLen {longList = aListshortList = bListlongLen = aLenshortLen = bLen} else {longList = bListshortList = aListlongLen = bLenshortLen = aLen}flag := 0for i, j := longLen-1, shortLen-1; i >= 0; i, j = i-1, j-1 {var shortNum intlongNum, _ := strconv.Atoi(longList[i])if j >= 0 {shortNum, _ = strconv.Atoi(shortList[j])} else {shortNum = 0}if (longNum+shortNum+flag)%2 == 0 {longList[i] = "0"} else {longList[i] = "1"}if (longNum+shortNum+flag)/2 == 1 {flag = 1} else {flag = 0}}if flag == 1 {longList = append([]string{"1"}, longList...)}return strings.Join(longList, "")
}
更多推荐
《leetcode
发布评论