# Leetcode 67:Add Binary(二進制求和)

Leetcode 67:Add Binary(二進制求和)

(python、java)

Given two binary strings, return their sum (also a binary string).

The input strings are both non-empty and contains only characters 1 or 0.

給定兩個二進制字符串,返回他們的和(用二進制表示)。

輸入爲非空字符串且只包含數字 10

Example 1:

Input: a = "11", b = "1"
Output: "100"

Example 2:

Input: a = "1010", b = "1011"
Output: "10101"

解題思路(Java):

​ Java:由於Java語言不像 C/C++ ,Java字符串 String 不可變,比較字符串不能用 “=” ,”=“ 會比較字符串是否爲同一個對象,而不是比較字符串內容是否相同。StringBuilder 可操作性較好,可用來記錄每一位數 相加後的最終值。

​ 所以這道題輸入字符串可利用 chatAt() 方法(用於返回指定索引處的字符。索引範圍爲從 0 到 length() - 1。)轉化爲char字符,減去字符 ‘0’ ,得 int 型數值 0 或 1 ,分別與sum累加 。

java:

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):

​ python3明顯靈活很多:

bin()函數 -- 返回一個整數 int 或者長整數 long int 的二進制表示。

  • 返回的數值是以0b開頭,表明返回的數值是二進制

int() 函數用於將一個字符串或數字轉換爲整型。

class int(x, base=10)

  • x -- 字符串或數字。
  • base -- 進制數,默認十進制。(指定base爲非十進制時,x 需以字符串形式傳入)

python3:

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章