两个字符串相加的通用解法

二级制求和

http://www.nowcoder.com/questionTerminal/c8c9f42c19194aa88781efefef4df44b

N是进制,二进制N = 2, 十进制N = 10

import java.util.*;

public class Solution {

    /**
     * 
     * @param a string字符串 
     * @param b string字符串 
     * @return string字符串
     */
    private static final int N = 2;

    public String addBinary (String a, String b) {
        if (a == null || a.length() == 0) {
            return b;
        }
        if (b == null || b.length() == 0) {
            return a;
        }
        StringBuilder sb = new StringBuilder();
        int carry = 0;
        int i1 = a.length() - 1;
        int i2 = b.length() - 1;
        while (i1 >= 0 || i2 >= 0) {
            int n1 = i1 >= 0 ? a.charAt(i1--) - '0' : 0;
            int n2 = i2 >= 0 ? b.charAt(i2--) - '0' : 0;
            int sum = carry + n1 + n2;
            carry = sum / N;
            sum %= N;
            sb.append(sum);
        }
        if (carry > 0) {
            sb.append(carry);
        }
        return sb.reverse().toString();
    }
}
全部评论

相关推荐

神哥了不得:放平心态,再找找看吧,主要现在计算机也变卷了,然后就比较看学历了,之前高中毕业你技术强,都能找到工作的
点赞 评论 收藏
分享
明天不下雨了:兄弟你是我今天看到的最好看的简历(我说的是简历风格跟简历书写)把985 211再搞亮一点。投boss就说;您好,我华科(985)研二在读,本科211。对您的岗位很感兴趣,希望能获得一次投递机会。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务