二进制加法

字符串加法

http://www.nowcoder.com/questionTerminal/829ae8987a424bd6b9a95a240ebdb0e3

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String b = sc.next();
        System.out.println(new Main().add(a, b));
    }
    public String add(String a, String b){
        int c = 0;//进位,初始为0
        StringBuilder sb = new StringBuilder();
        for(int i = a.length() - 1, j = b.length() - 1;;--i, --j){
            if(i < 0 && j < 0) break;
            int t1 = (i >= 0)? a.charAt(i) - '0': 0;//较短串该位没数就当0
            int t2 = (j >= 0)? b.charAt(j) - '0': 0;
            sb.append((t1 + t2 + c)%2);//每一位都是两个对应的位再加进位%2
            c = (t1 + t2 + c)/2;//只要和大于等于2就进位1,更新进位
        }
        if(c == 1) sb.append("1");//最高位的进位检查
        return String.valueOf(sb.reverse());//最高位应该在最左边
    }
}
全部评论

相关推荐

仁者伍敌:服务员还要脱颖而出,这是五星级酒店吗
点赞 评论 收藏
分享
白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务