我是靠谱客的博主 顺利灰狼,最近开发中收集的这篇文章主要介绍给定两个二进制字符串,返回他们的和(用二进制表示),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近几天在领扣(https://leetcode-cn.com)刷题...以此记录

水平不够,从简单的做起。

 

67. 二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。

输入为非空字符串且只包含数字 1 和 0

    class Solution {
        public String addBinary(String a, String b) {
            char[] aArray = a.toCharArray();
            char[] bArray = b.toCharArray();
            if(aArray.length>=bArray.length){
                return addBinary(aArray,bArray);
            }
            return addBinary(bArray,aArray);
        }

        /** 长数组+短数组*/
        public String addBinary(char[] aArray,char[] bArray){
            //初始化进位标志
            int target = 0;
            //a数组的起始位
            int initIndex = aArray.length-bArray.length;
            for(int i = bArray.length-1;i>=0;i--){
                //两数组、进位标志相加得到的字符
                int temp = (int)aArray[initIndex+i]+(int)bArray[i]+ target - (int)'0';
                if(temp>'1'){
                    //有进位
                    aArray[initIndex+i] = (char)(temp - 2);
                    target = 1;
                }else {
                    //无进位
                    aArray[initIndex+i] = (char)temp;
                    target = 0;
                }
            }
            //b数组遍历完成
            //无进位
            if(target == 0){
                return String.valueOf(aArray);
            }
            //进位
            //遍历a数组剩余部分
            for(int i = initIndex - 1;i>=0;i--){
                //进位后不需再进位
                if(aArray[i]=='0'){
                    //改为1
                    aArray[i]++;
                    return String.valueOf(aArray);
                }
                //改为0
                aArray[i]--;
            }
            //遍历a完成仍有进位
            return "1"+String.valueOf(aArray);
        }
    }

最后

以上就是顺利灰狼为你收集整理的给定两个二进制字符串,返回他们的和(用二进制表示)的全部内容,希望文章能够帮你解决给定两个二进制字符串,返回他们的和(用二进制表示)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(87)

评论列表共有 0 条评论

立即
投稿
返回
顶部