keep learning, keep coding!
Problem - Add Binary
Given two binary strings a and b, return their sum as a binary string.
翻譯蒟蒻
給定兩個二進位的數,要返回兩者的總和
Example 1:
1
2Input: a = "11", b = "1"
Output: "100"Example 2:
1
2Input: a = "1010", b = "1011"
Output: "10101"
Solution - JavaScript
藉由從最後一位數開始處理,並用 temp 作為存儲進位值
1 | /** |
parseInt()
函數可以將字符串轉換為整數,
但!parseInt()
在解析二進制字符串時有一個限制:只能解析 32 位的二進制數字。
如果二進制字串表示的數字大於 11111111111111111111111111111111(32 個 1),parseInt()
就無法正確解析,所以以下方式不會過。
1 | /** |
Solution - Ruby
Solution 1:
使用
reverse
為了從最右邊開始進行加法運算。
1 | def add_binary(a, b) |
Solution 2:
1 | def add_binary(a, b) |
與上面的 JavaScript
parseInt()
相比之下,Ruby 的to_i
方法可以解析任意長度的二進制字串。這也是為什麼在 Ruby 中可以直接使用to_i
和to_s
方法來進行二進制加法,而在 JavaScript 中則需要使用更複雜的方法。
Solution - PHP
1 | function addBinary($a, $b) { |
以下方式會造成 Runtime Error,原因在於處理非常大的數字時會失效。
1 | function addBinary($a, $b) { |
PHP 方法筆記
bindec
函數用於將二進制字符串轉換為對應的十進制數字。函數的基本語法如下:
1
2
3int bindec ( string $binary_string )
// `$binary_string`: 要轉換的二進制字符串。1
2
3
4
5$binaryString = '1101';
$decimalNumber = bindec($binaryString);
echo $decimalNumber;
// Output: 13decbin
函數用於將十進制數字轉換為對應的二進制字符串。函數的基本語法如下:
1
2
3string decbin ( int $number )
// `$number`: 要轉換的十進制數字。1
2
3
4
5$decimalNumber = 10;
$binaryString = decbin($decimalNumber);
echo $binaryString;
// Output: 1010