67 二進位制求和 轉換法

2021-10-03 08:13:18 字數 1283 閱讀 1192

難度:簡單

在利用字串相加法的過程,有遇到乙個問題,就是在申請字串記憶體空間的時候,容易報錯,這是由於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...