LeetCode Add Binary

来源:互联网 发布:vb中"clear"是什么意思 编辑:程序博客网 时间:2024/05/16 06:56

原题链接在这里: https://leetcode.com/problems/add-binary/

这道题与Plus One相似。都是维护一个currentDigit(%) 和一个carryDigit(/). 

Time O(max(m,n)), Space O(max(m,n)), m = a.length(), n = b.length()

Note:1. 注意是从String的尾部算起,所以注意i 和index的关系;

2. 若是算到最后,carryDigit还是1的话就是有一个最后的进位,要在res的首位加起来。

AC Java:

public class Solution {    public String addBinary(String a, String b) {        if(a==null && b==null && a.length()==0 && b.length()==0){            return "";        }                int len1 = a.length();        int len2 = b.length();        StringBuilder res = new StringBuilder();        int carryDigit = 0;        int currentDigit;        int i = 0;        while(i<len1 && i<len2){            currentDigit = (Character.getNumericValue(a.charAt(len1-1-i)) + Character.getNumericValue(b.charAt(len2-1-i)) + carryDigit)%2;            carryDigit = (Character.getNumericValue(a.charAt(len1-1-i)) + Character.getNumericValue(b.charAt(len2-1-i)) + carryDigit)/2;            if(currentDigit == 0){                res.insert(0,"0");            }else{                res.insert(0,"1");            }            i++;        }                if(len1 > len2){            while(i<len1){                currentDigit = (Character.getNumericValue(a.charAt(len1-1-i)) + carryDigit)%2;                carryDigit = (Character.getNumericValue(a.charAt(len1-1-i)) + carryDigit)/2;                if(currentDigit == 0){                    res.insert(0,"0");                }else{                    res.insert(0,"1");                }                i++;            }        }        if(len1 < len2){            while(i<len2){                currentDigit = (Character.getNumericValue(b.charAt(len2-1-i)) + carryDigit)%2;                carryDigit = (Character.getNumericValue(b.charAt(len2-1-i)) + carryDigit)/2;                if(currentDigit == 0){                    res.insert(0,"0");                }else{                    res.insert(0,"1");                }                i++;            }        }        if(carryDigit != 0){                res.insert(0,"1");        }        return res.toString();    }}


0 0
原创粉丝点击