zoukankan      html  css  js  c++  java
  • LeetCode 67. Add Binary

    Given two binary strings, return their sum (also a binary string).

    For example,
    a = "11"
    b = "1"
    Return "100".

    这个题目只要注意各种情况你就成功了一大半,特别要注意的是对进位赋值后可能产生的变化,以及最后一位进位为1时,

    我们要把这个1插进来。同时注意字符串的低位是我们数值的高位

    class Solution {
    public:
        string addBinary(string a, string b) {
            reverse(begin(a), end(a));
            reverse(begin(b), end(b));
            string result;
            char num = '0';
            int i = 0;
            for (;i < a.size() && i < b.size();++i)
            {
                if (a[i] == '0'&&b[i] == '0'&&num == '0')
                {
                    result.insert(begin(result), '0');
                }
                if (a[i] == '1'&&b[i] == '1'&&num == '1')
                {
                    result.insert(begin(result), '1');
                }
                if ((a[i] == '0'&&b[i] == '1'&&num == '1') || (a[i] == '1'&&b[i] == '0'&&num == '1') ||
                    (a[i] == '1'&&b[i] == '1'&&num == '0'))
                {
                    result.insert(begin(result), '0');
                    num = '1';
                }
                if (a[i] == '1'&&b[i] == '0'&&num == '0' || a[i] == '0'&&b[i] == '1'&&num == '0' ||
                    a[i] == '0'&&b[i] == '0'&&num == '1')
                {
                    result.insert(begin(result), '1');
                    num = '0';
                }
            }
            if (i == a.size())
            {
                for (;i < b.size();++i)
                {
                    if (b[i] == '0'&&num == '0')
                        result.insert(begin(result), '0');
                    if (b[i] == '0'&&num == '1' || b[i] == '1'&&num == '0')
                    {
                        result.insert(begin(result), '1');
                        num = '0';
                    }
                    if (b[i] == '1'&&num == '1')
                        result.insert(begin(result), '0');
                }
            }
            else
            {
                for (;i < a.size();++i)
                {
                    if (a[i] == '0'&&num == '0')
                        result.insert(begin(result), '0');
                    if (a[i] == '1'&&num == '1')
                        result.insert(begin(result), '0');
                    if (a[i] == '0'&&num == '1' || a[i] == '1'&&num == '0')
                    {
                        result.insert(begin(result), '1');
                        num = '0';
                    }
                    
                }
            }
            if (num == '1')result.insert(begin(result), '1');
            return result;
        }
    };
  • 相关阅读:
    Oracle什么时候需要Commit
    Oracle数据库SQL优化
    事务的四个特性(ACID)
    MySQL的两种存储引擎storage engine特点和对比
    MySql绿色版下载,安装,配置详解
    Unsupported major.minor version 51.0
    linux服务器下添加字体
    java日期比较,日期计算
    微信公众号开发保持用户登录状态思路
    本机搭建外网web服务器
  • 原文地址:https://www.cnblogs.com/csudanli/p/5877499.html
Copyright © 2011-2022 走看看