当前位置: 首页 > article >正文

LeetCode 面试经典150题 67.二进制求和

415.字符串相加  思路一模一样

题目:给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。

eg: 输入a=“1010” b=“1011”    输出“10101”  

思路:从右开始遍历两个字符串,因为右边是低位先运算。如果其中一个字符串遍历完就补0。

while (i >= 0 || j >= 0 || carry != 0)  中 carry != 0 主要是解决最后有进位的情况,特别注意!

最后记得把字符串反转,因为先把低位运算结果存储起来了。

代码

class Solution {
    public String addBinary(String a, String b) {
        StringBuilder res =  new StringBuilder(); // 要返回的结果
        int i = a.length() - 1;
        int j = b.length() - 1;
        int carry  = 0; // 进位
        while (i >= 0 || j >= 0 || carry != 0) {
            int digitA = i >= 0 ? a.charAt(i) - '0' : 0;  // 当前a的取值
            int digitB = j >= 0 ? b.charAt(j) - '0' : 0;  // 当前b的取值
            int sum = digitA + digitB + carry;  // 当前位置相加的结果
            carry = sum >= 2 ? 1 : 0;
            sum = sum % 2;
            res.append(sum);
            i--;
            j--;
        }
        return res.reverse().toString(); // 把结果反转并返回
    }
}

性能

时间复杂度O(max(M,N)M,N分别是字符串a b的长度)

空间复杂度O(1)


http://www.kler.cn/a/312998.html

相关文章:

  • dapp获取钱包地址,及签名
  • 【时间之外】IT人求职和创业应知【34】-人和机器人,机器人更可靠
  • 009_SSH_Mysql图书管理系统(学生注册 借书 还书 绵阳)——lwplus87(免费送)
  • git命令及原理
  • BFD8122防爆轻便移动工作灯
  • [Docker#4] 镜像仓库 | 部分常用命令
  • istio中使用serviceentry结合egressgateway实现多版本路由
  • JFinal整合Websocket
  • 大模型中常见 loss 函数
  • 关于“华为杯”第二十一届中国研究生数学建模竞赛赛题下载及提交作品的重要提醒
  • pytorch实现RNN网络
  • Vue使用qrcodejs2-fix生成网页二维码
  • 解决 GitLab CI/CD 中的 `413 Request Entity Too Large` 错误
  • 生信初学者教程(五):R语言基础
  • 【计算机网络篇】电路交换,报文交换,分组交换
  • BGP实验
  • Percona发布开源DBaaS平台;阿里云RDS发布全球多活数据库(GAD);Redshift支持自然语言生成SQL
  • Pyspark dataframe基本内置方法(4)
  • 【有啥问啥】弱监督学习新突破:格灵深瞳多标签聚类辨别(Multi-Label Clustering and Discrimination, MLCD)方法
  • QT 将文字矢量化,按照设置的宽和高绘制
  • 3657A/B/AM/BM矢量网络分析仪
  • CSS - 通用左边图片,右边内容,并且控制长度溢出处理模板(vue | uniapp | 微信小程序)
  • python画图|曲线分段设置颜色基础教程
  • 什么是3D展厅?有何优势?怎么制作3D展厅?
  • 蓝星多面体foc旋钮键盘复刻问题详解
  • JVM java主流的追踪式垃圾收集器