zoukankan      html  css  js  c++  java
  • 67. 二进制求和

    67. 二进制求和

    https://leetcode-cn.com/problems/add-binary/description/

    package com.test;
    
    /**
     * @Author stono
     * @Date 2018/8/24 下午4:53
     */
    public class Lesson067 {
        public static void main(String[] args) {
            String a = "11";
            String b = "1";
            char[] chars = a.toCharArray();
            for (char aChar : chars) {
                System.out.println(aChar);
            }
            String s = addBinary(a, b);
            System.out.println(s);
        }
    
        public static String addBinary(String a, String b) {
    
            // 把字符串转化为数组
            char[] charsA = a.toCharArray();
            char[] charsB = b.toCharArray();
            int lengthA = a.length();
            int lengthB = b.length();
            // 获取一个最大值,然后加1,构建结果数组
            int max = lengthA > lengthB ? (lengthA + 1) : (lengthB + 1);
            int[] charsC = new int[max];
            int i = lengthA - 1;
            int j = lengthB - 1;
            int k = max - 1;
            int ck = 0;
            // 从最后一位开始取值,进行累加
            for (; i > -1 && j > -1; i--, j--, k--) {
                int ai = charsA[i] - '0';
                int bj = charsB[j] - '0';
                int res = ck + ai + bj;
                charsC[k] = (res % 2);
                ck = (res > 1 ? 1 : 0);
    
            }
            // 把B里面的剩余加进来,这里的隐含条件是A遍历结束了;
            for (; j > -1; j--, k--) {
                int bj = charsB[j] - '0';
                int res = ck + bj;
                charsC[k] = (res % 2);
                ck = (res > 1 ? 1 : 0);
            }
            // 把A里面的剩余加进来,这里隐含条件是B遍历结束了;
            for (; i > -1; i--, k--) {
                int ai = charsA[i] - '0';
                int res = ck + ai;
                charsC[k] = (res % 2);
                ck = (res > 1 ? 1 : 0);
            }
            // 把最后进位的元素加进来
            charsC[0] = ck;
            if (charsC[0] == 0) {
                i = 1;
            } else {
                i = 0;
            }
            StringBuilder builder = new StringBuilder();
            for (; i < charsC.length; i++) {
                builder.append(charsC[i]);
            }
            return builder.toString();
        }
    }

    char 转int   char-'0'

  • 相关阅读:
    Java中String与byte[]的转换
    移动端界面设计之尺寸篇(更新)
    移动端开发必晓
    sublime 之 vitage/emmet
    Sublime Text3工具的安装、破解、VIM功能vintage插件教程
    Sublime Text 3 快捷键总结
    iPhone Safari下iframe不显示滚动条无法滚动的解决方法
    名片设计尺寸及名片设计的注意事项
    转:『引』最全前端资源汇集
    (转)详解css3弹性盒模型(Flexbox)
  • 原文地址:https://www.cnblogs.com/stono/p/9531199.html
Copyright © 2011-2022 走看看