风雨雾凇 风雨雾凇
首页
  • 服务端

    • golang
  • 其他

    • leetcode
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

风雨雾凇

技术小渣渣
首页
  • 服务端

    • golang
  • 其他

    • leetcode
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • golang

  • 技术文档

  • GitHub技巧

  • Nodejs

  • 博客搭建

  • leetcode

    • 两数之和-1
    • 无重复字符的最长子串-3
    • 整数翻转-7
    • 回文数-9
    • 13-罗马数字转整数
    • 最长公共前缀
    • 3Sum
    • Valid Parentheses
    • Merge Two Sorted Lists
    • Remove Duplicates from Sorted Array
    • Remove Element
    • Implement strStr()
    • Search Insert Position
    • Count and Say
    • 字符串相乘
    • Maximum Subarray
    • Length of Last Word
    • Plus One
    • Add Binary
      • Sqrt(x)
      • 翻转字符串里的单词
      • 字符串的排列
    • 机器学习

    • 技术
    • leetcode
    风雨雾凇
    2020-03-08
    目录

    Add Binary

    # 题目

    Given two binary strings, return their sum (also a binary string).
    
    The input strings are both non-empty and contains only characters 1 or 0.
    
    Example 1:
    
    Input: a = "11", b = "1"
    Output: "100"
    Example 2:
    
    Input: a = "1010", b = "1011"
    Output: "10101"
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/add-binary
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

    # 解答思路

    根据题意解答即可。

    # 代码

    package easy
    
    import (
    	"testing"
    )
    
    /**
    Given two binary strings, return their sum (also a binary string).
    
    The input strings are both non-empty and contains only characters 1 or 0.
    
    Example 1:
    
    Input: a = "11", b = "1"
    Output: "100"
    Example 2:
    
    Input: a = "1010", b = "1011"
    Output: "10101"
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/add-binary
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    */
    
    func addBinary(a string, b string) string {
    	al := len(a) - 1
    	bl := len(b) - 1
    	needAdd := 0
    	var res string
    	for ; al >= 0 || bl >= 0; al, bl = al-1, bl-1 {
    		if al >= 0 && bl >= 0 {
    			aRes := rune2int(a[al])
    			bRes := rune2int(b[bl])
    			na, tRes := cal(aRes + bRes + needAdd)
    			needAdd = na
    			res = tRes + res
    			continue
    		}
    		if al < 0 {
    			bRes := rune2int(b[bl])
    			na, tRes := cal(bRes + needAdd)
    			needAdd = na
    			res = tRes + res
    			continue
    		}
    		aRes := rune2int(a[al])
    		na, tRes := cal(aRes + needAdd)
    		needAdd = na
    		res = tRes + res
    	}
    	if needAdd == 1 {
    		res = "1" + res
    	}
    	return res
    }
    
    func rune2int(r uint8) int {
    	if r == '1' {
    		return 1
    	}
    	return 0
    }
    
    func cal(i int) (int, string) {
    	needAdd := 0
    	res := "0"
    	switch i {
    	case 0:
    	case 1:
    		res = "1"
    	case 2:
    		needAdd = 1
    	case 3:
    		needAdd = 1
    		res = "1"
    	}
    	return needAdd, res
    }
    
    func TestAddBinary(t *testing.T) {
    	println(addBinary("11", "1"))
    	println(addBinary("1010", "10110"))
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    编辑 (opens new window)
    #面试#学习笔记#leetcode
    上次更新: 2023/02/17, 16:53:03
    Plus One
    Sqrt(x)

    ← Plus One Sqrt(x)→

    最近更新
    01
    builtin
    02-12
    02
    导读
    02-12
    03
    13-罗马数字转整数
    01-30
    更多文章>
    Theme by Vdoing | Copyright © 2017-2023 风雨雾凇 | 粤ICP备16018321号-2
    博客内容遵循署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式