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

    此博客链接:https://www.cnblogs.com/ping2yingshi/p/13158404.html

    二进制求和(106min)

    题目链接:https://leetcode-cn.com/problems/add-binary/

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

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

    示例 1:

    输入: a = "11", b = "1"
    输出: "100"
    示例 2:

    输入: a = "1010", b = "1011"
    输出: "10101"

    题解:

            思路:            

                    1.把字符串反转

                     2.定义一个进位的变量

                     3. 定义一个存储结果的变量

            4.取长度长的字符串循环

            5.分三种情况:情况1.两个字符串都是1,进位也是一,则把1加入到新定义的字符串变量中;进位是0,则把0加入到新定义的字符串中。                              最后把进位都置为1。

                          情况2.两个字符串一个是1,一个是0,如果进位是1,那么结果中存入0,,进位重新置为1,如果进位是0,那把1加入结果                              中,进位置为0.

                          情况3.两个字符串都是0,如果进位是1,把1加入到结果中,进位置为0,如果进位为0,则把0加入到结果中,进位置为0.

            6.对最后一次进位做判断,如果最后一次进位是1,则把1加入到结果中。

            7.把字符串在反转回来.

    class Solution {
        public String addBinary(String a, String b) {
            //先把字符串变成stringBuiler类型
            StringBuilder sum=new StringBuilder();
            StringBuilder revasead=new StringBuilder(a);
            StringBuilder revasebd=new StringBuilder(b);
            //反转字符串
              revasead=revasead.reverse();
              revasebd=revasebd.reverse();
            //取长字符串
            int max=Math.max(a.length(),b.length());
            //定义一个进位的变量
            char aplus='0';
            //开始判断
            for(int i=0;i<max;i++)
            {
                char revasea = i >=a.length()?'0':revasead.charAt(i);
                // char aChar = i >= aLength ? '0' : ar.charAt(i);
                char revaseb = i >=b.length()?'0':revasebd.charAt(i);
             // char revaseb = i >=b.length()?'0':revasebd.chatAt(i);
                //情况1
                if(revasea=='1'&&revaseb=='1')
                {
                    if(aplus=='1')
                    {
                       sum.append('1'); 
                    }
                    else
                       sum.append('0');
                    
                    aplus='1';
                }
                //情况2
               else if((revasea=='1'&&revaseb=='0')||(revasea=='0'&&revaseb=='1'))
                {
                    if(aplus=='1')
                    {
                       sum.append('0'); 
                       aplus='1';
                    }
                    else
                    {
                         sum.append('1');
                         aplus='0';
                    }   
                    
                }
                //情况3
            
               else if(revasea=='0'&&revaseb=='0')
                {
                    if(aplus=='1')
                    {
                       sum.append('1'); 
                       aplus='0';
                    }
                    else
                    {
                         sum.append('0');
                         aplus='0';
                    }   
                    
                }
              
    
            }
              if(aplus=='1')
                sum.append(aplus);
               return sum.reverse().toString();
    
        }
    }
    

      

  • 相关阅读:
    nodejs
    jsp路径问题之base
    WordPress固定链接修改后访问文章页面404
    IntelliJ IDEA使用教程 (总目录篇)
    SQL SELECT DISTINCT 语句
    数据库的内连接、外连接(左外连接、右外连接、全外连接)以及交叉连接(转)
    SQL之group by 和 having
    SQL之group by
    通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。
    java.lang.NoClassDefFoundError: Could not initialize class com.demo.jdbc.utils.MyJdbcUtils
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/13158404.html
Copyright © 2011-2022 走看看