zoukankan      html  css  js  c++  java
  • leetcode刷题笔记六十七题 二进制求和

    leetcode刷题笔记六十七题 二进制求和

    源地址:67. 二进制求和

    问题描述:

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

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

    示例 1:

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

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

    提示:

    每个字符串仅由字符 '0' 或 '1' 组成。
    1 <= a.length, b.length <= 10^4
    字符串如果不是 "0" ,就都不含前导零。

    代码补充:

    /**
    本题较为简单 通过模拟10进制加法实现
    从两个数组尾端向前依次获取元素,不存在的话置0
    当前位置的数字为(a(i) + b(i) + carry)%2
    当前位置的进位为(a(i) + b(i) + carry)/2
    最后判断下遗留进位是否为1,若为1,则需要在首部添加1
    */
    import scala.collection.mutable
    object Solution {
        def addBinary(a: String, b: String): String = {  
            val maxLen = math.max(a.length, b.length)
            val arr = mutable.ArrayBuffer[Int]()
            var car = 0
            var tempA = 0
            var tempB = 0
    
            for(i <- 0 to maxLen-1){
                if(i < a.length)  tempA = a(a.length - 1 - i).toString.toInt 
                else  tempA = 0
                if(i < b.length)  tempB = b(b.length - 1 - i).toString.toInt 
                else  tempB = 0
                //println("i: " + i)
                //println("tempA: " + tempA)
                //println("tempB: " + tempB)
                val sum = tempA + tempB + car  
                (sum)%2 +=: arr
                car = (sum)/2  
            }
            if (car == 1) 1 +=: arr
    
            //println(arr.toArray.mkString)
            return arr.toArray.mkString
        }
    }
    
  • 相关阅读:
    函数的参数设置
    定义函数
    使用dict和set
    (转)set集合的应用
    循环与range
    if语句
    How to use git hub
    Install pyodbc in OpenSUSE
    Ubuntu编译安装PHP7
    Ubuntu为已经安装的PHP7单独编译mysqli
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13326792.html
Copyright © 2011-2022 走看看