難度:簡單
在利用字串相加法的過程,有遇到乙個問題,就是在申請字串記憶體空間的時候,容易報錯,這是由於strlen()和sizeof()函式對於求字串長度不同導致的:
c語言中沒有字串,用的是字元陣列來模擬字串。c風格的字串時字元陣列然後在末尾加『/0』表示結尾。在c語言中有strlen和sizeof兩個函式求字元陣列的長度函式,他們倆的區別就是是否把最後的結束標誌也加上去。strlen是不加的,他表示字串的長度。而sizeof求的是字串在記憶體中的長度,所以它是加上最後的』\0』的。所以一般而言後者的長度會比前者多1。
c語言實現的步驟是:
源**如下:
char
*addbinary
(char
* a,
char
* b)
// 對短字串b進行填充補0
for(i=
0; i
)else
}// 依次位對位進行判斷,結合flag判斷是否要進製
for(i=len; i>
0; i--
)else
}// 如果最後的flag=1,說明要進製,將c[0]==『1』
if(flag==1)
// 如果不需要進製,依次將c字串向後錯一位
else
}return c;
}
執行結果為:
不得不說python打法好:
class
solution
:def
addbinary
(self, a:
str, b:
str)
->
str:
return
str(
bin(
int(a,2)
+int
(b,2))
)[2:
]
執行結果為:
67 二進位制求和
一 題意 給定兩個二進位制字串,返回他們的和 用二進位制表示 輸入為非空字串且只包含數字 1 和 0。示例 1 輸入 a 11 b 1 輸出 100 示例 2 輸入 a 1010 b 1011 輸出 10101 二 分析和解答 public string addbinary string a,str...
67 二進位制求和
雖然自己也寫對了,但是 非常不簡潔,還是答案的 簡潔,應該學習下 答案 class solution index 0 找到第乙個不為0的位置 while res index 0 index len index 如果結果為0,就直接返回0 if index len 1 return 0 return ...
67 二進位制求和
給定兩個二進位制字串,返回他們的和 用二進位制表示 輸入為非空字串且只包含數字 1 和 0。示例 1 輸入 a 11 b 1 輸出 100 示例 2 輸入 a 1010 b 1011 輸出 10101 class solution def addbinary self,a str,b str str...