<u>(python、java)</u>java
Given two binary strings, return their sum (also a binary string).python
The input strings are both non-empty and contains only characters 1
or 0
.app
給定兩個二進制字符串,返回他們的和(用二進制表示)。函數
輸入爲非空字符串且只包含數字 1
和 0
。ui
Example 1:code
Input: a = "11", b = "1" Output: "100"
Example 2:對象
Input: a = "1010", b = "1011" Output: "10101"
Java:因爲Java語言不像 C/C++ ,Java字符串 String 不可變,比較字符串不能用 「=」 ,」=「 會比較字符串是否爲同一個對象,而不是比較字符串內容是否相同。StringBuilder 可操做性較好,可用來記錄每一位數 相加後的最終值。索引
因此這道題輸入字符串可利用 chatAt() 方法(用於返回指定索引處的字符。索引範圍爲從 0 到 length() - 1。)轉化爲char字符,減去字符 ‘0’
,得 int 型數值 0 或 1 ,分別與sum累加 。字符串
class Solution { public String addBinary(String a, String b) { int i=a.length()-1,j=b.length()-1,tmp=0,sum; StringBuilder str=new StringBuilder(); while (i>=0||j>=0){ sum=tmp; if(i>=0) sum += a.charAt(i--)- '0'; if(j>=0) sum += b.charAt(j--)- '0'; tmp=sum/2;//tmp記錄是否進一位 str.append(sum%2);//sum%2得餘數,即爲該位 最終數字 } if(tmp!=0) str.append(tmp); return str.reverse().toString();//將 StringBuilder 所得倒置後即爲答案,轉爲 String返回 } }
python3明顯靈活不少:input
bin()
函數 -- 返回一個整數 int 或者長整數 long int 的二進制表示。
int()
函數用於將一個字符串或數字轉換爲整型。
class int(x, base=10)
class Solution: def addBinary(self, a: str, b: str) -> str: """ :type a: str :type b: str :return: str """ return bin(int(a,2)+int(b,2))[2:] #[2:]從第三個元素開始截取,忽略 0b