zoukankan      html  css  js  c++  java
  • LeetCode67-二进制求和(很长的水题)

    一眼就看出来肯定要溢出!

    一次通过!而且是最优的方法

    除了麻烦一点,没有太大的问题

    主要是一次就能通过这么长的代码,我真的很强!

    简洁是其次,代码最重要是易懂!

    public String addBinary(String a, String b) {
    
    
    
    
                //反着存,到最后反转即可
                StringBuilder result = new StringBuilder();
    
                //不对0,长度不一样,那么是要从各自右边算起,而不是取一个值
    
                boolean flag = false;
    
                int i = a.length()-1;
                int j = b.length()-1;
    
                //先加长度相同的部分
                while(i>=0&&j>=0){
    
                    if(a.charAt(i)=='1'){
    
                        if(b.charAt(j)=='0'){
    
                            if(flag){
                                result = result.append('0');
                            }else{
                                result = result.append('1');
                            }
    
                        }else {
                            if(flag){
                                result = result.append('1');
                            }else{
                                result = result.append('0');
                                flag=true;
                            }
                        }
    
    
                    }else{
    
                        if(b.charAt(j)=='0'){
    
                            if(flag){
                                result =result.append('1');
                                flag=false;
                            }else{
                                result = result.append('0');
                            }
    
    
                        }else{
    
                            if(flag){
                                result =result.append('0');
                            }else{
                                result = result.append('1');
                            }
    
    
                        }
    
    
                    }
    
                    j--;
                    i--;
                }
    
                //出来之后,看看谁还没加完
                if(i<0&&j<0){
                    //不用管了,都ok了
                }else if (i>=0){
                    //进位好烦
                    while(i>=0){
                        if(a.charAt(i)=='1'){
                            if(flag){
                                result = result.append('0');
                            }else{
                                result = result.append('1');
                            }
                        }else{
                            if(flag){
                                result = result.append('1');
                                flag=false;
                            }else{
                                result = result.append('0');
                            }
                        }
                        i--;
                    }
                }else{
                    while(j>=0){
                        if(b.charAt(j)=='1'){
                            if(flag){
                                result = result.append('0');
                            }else{
                                result = result.append('1');
                            }
                        }else{
                            if(flag){
                                result = result.append('1');
                                flag=false;
                            }else{
                                result = result.append('0');
                            }
                        }
                        j--;
                    }
    
                }
    
                //最后还有一个进位
                if(flag){
                    result = result.append(1);
                }
    
    
                return result.reverse().toString();
    
        }
  • 相关阅读:
    PAT甲级——A1148 WerewolfSimpleVersion【20】
    kruskal算法【最小生成树2】
    prim算法【最小生成树1】
    最小生成树
    关键路径详解
    「日常训练&知识学习」树的直径(POJ-1849,Two)
    「日常训练」Balancing Act(POJ-1655)
    「日常训练」Duff in the Army (Codeforces Round #326 Div.2 E)
    「题目代码」P1054~P1059(Java)
    「日常训练」All Friends(POJ-2989)
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9392267.html
Copyright © 2011-2022 走看看