java数据结构与算法刷题-----LeetCode67:二进制求和

Java算法——二进制求和(LeetCode第67题) 问题描述 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。 示例 分析 这里可以直接模拟竖式相加的过程,从两个字符串最后开始遍历。每次相加都是 进位 + 上面的数字 + 下面的数字,因为二进制加法是逢二进一的。因此相加之后当前位的结果应该为:(进位 + 上面的数字 + 下面的数字)% 2。而每次相加产生的进位则可以用(进位 + 上面的数字 + 下面的数字)/ 2 来表示。 代码实现 /* 循环遍历两个字符串,循环一直到遍 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

  1. 思路分析

从后往前遍历,依次相加,处理一下进位就行了

  1. 代码
    在这里插入图片描述
class Solution {
    public String addBinary(String a, String b) {
        StringBuilder stringBuilder = new StringBuilder();
        int jin = 0;
        int indexA = a.length()-1;
        int indexB = b.length()-1;
        while(indexA>=0||indexB>=0){
            int aI = indexA<0?0:a.charAt(indexA--) - 48;
            int bI = indexB<0?0:b.charAt(indexB--) - 48;
            int sum = aI + bI + jin;
            // if( sum>= 2){//需要进位
            //     stringBuilder.append(sum==3?1:0);
            //     jin = 1;
            // }else{
            //     jin = 0;
            //     stringBuilder.append(sum);
            // }
            //下面两行等于上面if-else
            stringBuilder.append((char)(sum%2+'0'));
            jin = sum/2;
        }
        if(jin>0) stringBuilder.append(jin);
        stringBuilder.reverse();
        return stringBuilder.toString();

    }
}

刷题一定要坚持,总结套路,不单单要把题做出来,要举一反三,也要参考别人的思路,学习别人解题的优点,找出你觉得可以优化的点。

  1. 单链表解题思路:双指针、快慢指针、反转链表、预先指针
  1. 双指针:对于单链表而言,可以方便的让我们遍历结点,并做一些额外的事
  2. 快慢指针:常用于找链表中点,找循环链表的循环点,一般快指针每次移动两个结点,慢指针每次移动一个结点。
  3. 反转链表:通常有些题,将链表反转后会更好做,一般选用三指针迭代法,递归的空间复杂度有点高
  4. 预先指针:常用于找结点,比如找倒数第3个结点,那么定义两个指针,第一个指针先移动3个结点,然后两个指针一起遍历,当第一个指针遍历完成,第二个指针指向的结点就是要找的结点
  1. 数组解题思路:双指针、三指针,下标标记
  1. 双指针:多用于减少时间复杂度,快速遍历数组
  2. 三指针:多用于二分查找,分为中间指针,左和右指针
  3. 下标标记:常用于在数组范围内找东西,而不想使用额外的空间的情况,比如找数组长度为n,元素取值范围为[1,n]的数组中没有出现的数字,遍历每个元素,然后将对应下标位置的元素变为负数或者超出[1,n]范围的正数,最后没有发生变化的元素,就是缺少的值。
  4. 差分数组:对差分数组求前缀和即可得到原数组
  1. 用差值,作为下标,节省空间找东西。比如1900年到2000年,就可以定义100大小的数组,每个数组元素下标的查找为1900。
  2. 前缀和数组,对于数组 [1,2,2,4],其差分数组为 [1,1,0,2],差分数组的第 ii个数即为原数组的第 i-1 个元素和第 i个元素的差值,也就是说我们对差分数组求前缀和即可得到原数组
  1. 前缀和:假设有一个数组arr[1,2,3,4]。然后创建一个前缀和数组sum,记录从开头到每个元素区间的和。第一个元素是0。第二个元素,保存第一个和sum[1] = sum[0]+arr[0],第二个元素,保存第二个和sum[2] = sum[1]+arr[1]
  1. 栈解题思路:倒着入栈,双栈
  1. 倒着入栈:适用于出栈时想让输出是正序的情况。比如字符串’abc’,如果倒着入栈,那么栈中元素是(c,b,a)。栈是先进后出,此时出栈,结果为abc。
  2. 双栈:适用于实现队列的先入先出效果。一个栈负责输入,另一个栈负责输出。
LeetCode 第67题:二进制求和 通过这次的算法探险,我们学会了如何处理二进制字符串的加法问题。这个“二进制求和”的问题虽然看似简单,却涉及到了许多有趣的细节。通过详细的讲解和示例,我们深入理解了二进制加法中的进位处理逻辑。希望这篇文章能帮你更好地理解这道题目,如果有任何问题,欢迎留言讨论。 阅读详情

相关推荐

开源Agent Skill让AI画图不再翻车:从数据到专业图表全流程

在人工智能与数据可视化交叉领域,让模型直接生成图表往往伴随字体乱码、坐标轴密集、配色失调等高频问题。Agent Skill作为一种可复用的能力封装机制,将专业绘图流程固化为标准化操作手册,从数据特征识别、图表类型决策到代码生成与渲染校验形成完整闭环。它不再依赖临时提示词的一次性发挥,而是让AI按领域专家的思维执行任务,显著提升出图质量与稳定性。这种能力在数据分析报告、运营日报、论文插图等场景具有广泛实用价值,尤其适用于需要快速产出规范化图表的工作流。本文即从这一技术范式出发,介绍一个GitHub上获得2.5

weixin_33851429的博客 980

LeetCode刷题汇总

剑指offer 剑指 Offer 03 数组中重复的数字 剑指 Offer 04 二维数组中的查找 剑指 Offer 05 替换空格 剑指 Offer 06 从尾到头打印链表 剑指 Offer 07 重建二叉树 剑指 Offer 09 用两个栈实现队列 剑指 Offer 10- I 斐波那契数列 剑指 Offer 10- II 青蛙跳台阶问题 剑指 Offer 11 旋转数组的最小数字 剑指 Offer 12 矩阵中的路径 剑指 Offer 13 机器人的运动范围 剑指 Offer 14- I 剪绳子 剑指

weixin_44171872的博客 2万+

三相电机控制中的端电压、相电压与线电压波形解析

本文深入解析了三相电机控制中端电压、相电压与线电压的核心概念与波形差异。通过对比方波控制、SPWM和SVPWM三种主流控制策略下的实测波形特征,揭示了不同控制逻辑对电压波形(如梯形波、正弦波、马鞍波)的影响。文章重点阐述了SVPWM控制如何通过生成马鞍波形端电压来提高直流母线电压利用率,并提供了实用的波形测量与调试指南,帮助工程师深入理解电机控制原理并进行有效调试。

qsc901234567的博客 1402

LeetCode 67二进制求和&68文本左右对齐&69x的平方根

文本左右对齐 描述 给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ’ ’ 填充,使得每行恰好有 maxWidth 个字符。 要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。 文本的最后一行应为左对齐,且单词之间不插入额外的空格。 说明: 单词是指由非空格字符组成的字

bigsai 4125

【Flink】状态编程: 订单超时告警

文章目录一、基础概念二、Flink状态编程1、支持的状态类型2、Managed Keyed State六种类型基本API状态的生命周期3、Managed Operator State三、案例:订单延迟告警统计1、需求描述2、需求分析3、数据与模型4、详细实现 一、基础概念 在Flink架构体系中,有状态计算可以说是Flink非常重要的特性之一。 有状态计算是指: 在程序计算过程中,在Flink...

一只皮皮熊 2864

Hypermesh二次开发实战:从Tcl/Tk脚本到Ext API的进阶之路

本文系统介绍了Hypermesh二次开发的进阶路径,从自动化重复操作的Tcl/Tk脚本入门,到利用HMASCII接口深度读写模型数据,最终深入Ext API进行高性能计算与功能定制。通过实战案例,帮助工程师掌握从脚本录制到C++插件开发的完整技能,显著提升CAE前处理效率与自动化水平。

weixin_29306875的博客 672

Java实现 LeetCode 67 二进制求和

67. 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 ...

5405

无人驾驶汽车系统入门(三十二)——FEC算法:点云快速欧几里得聚类实战解析

本文深入解析了FEC算法在无人驾驶点云聚类中的高效应用,通过逐点处理策略和体素栅格预分割技术,实现了比传统欧几里得聚类快百倍的速度。文章详细介绍了算法原理、Python实现及参数调优指南,并对比了FEC与传统算法的性能差异,为无人驾驶系统开发提供了实用解决方案。

weixin_29065015的博客 487

力扣算法题67

67.二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入: a = “11”, b = “1” 输出: “100” 示例 2: 输入: a = “1010”, b = “1011” 输出: “10101” 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/add-bin...

weixin_44305721的博客 348

2023最新多文明策略手游《万国觉醒内购版》最新整理Linux商业手工服务端+安卓+详细搭建教程

2023最新多文明策略手游《万国觉醒内购版》最新整理Linux商业手工服务端+安卓+详细搭建教程。源码内置详细搭建教程,感兴趣可自行下载。

百创科技 1716

基于 STM32 的智能水表流量计设计与实现 —— 数据采集与远程传输

本文设计的基于 STM32 的智能水表流量计通过霍尔传感器实现流量采集,结合 STM32 的处理能力完成数据计算、存储与远程传输,具备计量精准、功耗低、可远程监控等特点。未来可优化方向:引入低功耗模式延长电池寿命,增加水质检测模块实现多参数监测,提升水务管理智能化水平。

weixin_42300449的博客 1029

数据结构之线性表——LeetCode:67. 二进制求和,27. 移除元素,26. 删除有序数组中的重复项

/ 它以不等于 val 的值排序。// 长度正确的预期答案。如果是,则直接返回 0,表示没有任何元素,也没有不重复的元素。// 长度正确的期望答案。// 排序 nums 的前 k 个元素。,分别用于快速遍历整个数组和标记不重复元素的位置。作为结果,它代表了删除重复元素后数组的新长度。的大小,即经过删除操作后剩余元素的数量。

u014114223的博客 1222

译码器Multisim电路仿真汇总——硬件工程师笔记

本文详细介绍了74LS139D和74LS138D两种TTL译码器的功能特点及应用。74LS139D是2线-4线译码器,具有低电平有效输出和使能控制功能,常用于地址译码和数据分配。74LS138D是3线-8线译码器,通过3位输入实现8路输出控制,广泛应用于微处理器系统。文中提供了两种芯片的引脚说明、真值表和典型应用电路,并附有硬件工程师笔试面试相关资源链接。这些基础知识对数字电路设计和硬件工程师面试准备具有重要参考价值。

XU157303764的博客 1267

LeetCode-二进制求和(67)

LeetCode-二进制求和(67) 这个题目并不算难,但是我花的时间并不短,原因是一开始没想到用一个变量来表示进位. 思路 首先,新建一个StringBuilder类型的变量用来返回结果,用一个变量level来表示是否有进位. 无进位的时候: 同为0,则为0. 同为1,则为0,进位. 不同,则为1. 有进位的时候: 同为0,则为1.不进位 同为1,则为1.进位 不同,则为0.不进位 考虑一个字符串结束的情况.一个字符串遍历结束时,另一个字符串所剩的长度就是L长-L短,然后把剩下的字符串跟

qq_42406674的博客 264

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LeetCode067_67. 二进制求和

LeetCode067_67. 二进制求和

luoyepiaoxue2014的博客 408

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Leetcode 67:Add Binary(二进制求和)

Leetcode 67:Add Binary(二进制求和) <u>(python、java)</u> Given two binary strings, return their sum (also a binary string). The input strings...

128

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【LeetCode】67.二进制求和

leetCode: 67 题目介绍: 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101" 我的解法: class Solution { public String...

jy0921 203

leetcode 67.二进制求和

原题如下 67.二进制求和 2020年6月23日 每日一题 题解 方法一 模拟加法运算。 本思路java代码示例: /*没有进位的时候记得进位归零 *作者@v7fgg *执行用时 :8 ms, 在所有 Java 提交中击败了16.42%的用户 *内存消耗 :40.1 MB, 在所有 Java 提交中击败了7.69%的用户 *2020年5月25日 8:19 */ class Solution { public String addBinary(String a, String b) {

zhuruihe2014的博客 207

# Leetcode 67:Add Binary(二进制求和)

Leetcode 67:Add Binary(二进制求和) 公众号:爱写bug ***(python、java)*** 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....

爱写Bug 327

力扣67:二进制求和

最容易理解的二进制求和方法!!!!!

ALICEy_的博客 253

二进制求和(力扣第67题)

题目: 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为非空字符串且只包含数字1和0。 示例1: 输入: a = "11", b = "1" 输出: "100" 示例2: 输入: a = "1010", b = "1011" 输出: "10101" 分析: 其实就是两个二进制数的加法运算,两个二进制数相加,首先设置一个进位标识符flag,初始值设置0。从低位到高位开始相加:   1、对应位置相加,然后再加上flag,三者之和设置为temp_sum,然后结果值的当前位为...

weixin_42438279的博客 372

leetcode-67-二进制求和

问题: package com.example.demo; public class Test67 { /** * 二进制求和 * 思路: * 1、先获取两个二进制字符串的长度,用于补齐为等长字符串,便于两两相加 * 2、定义一个overFlow来表名两两相加是否已经满足进1 * 3、定...

weixin_30587025的博客 174

可爱宝宝力扣刷题集目录

阿勒八叉

zhuruihe2014的博客 941

【LeetCode】 67. Add Binary 二进制求和(Easy)(JAVA)

【LeetCode】 67. Add Binary 二进制求和(Easy)(JAVA) 题目地址: https://leetcode.com/problems/plus-one/ 题目描述: Given two binary strings, return their sum (also a binary string). The input strings are both non-empty ...

qq_16927853的博客 152

【LeetCode】Add Binary(二进制求和)

这道题是LeetCode里的第67道题。 题目描述: 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字1和0。 示例1: 输入: a = "11", b = "1" 输出: "100" 示例2: 输入: a = "1010", b = "1011" 输出: "10101" 为了计算的方便我们把结果放入一个新的字符串里。 然后就是...

『诞生之时已至,以此修正万象』 391

[LeetCode]67. 二进制求和(java实现)高精度加法

[LeetCode]67. 二进制求和(java实现)高精度加法1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 思路(高精度加法): 解题思路就是二进制版的高精度加法,具体思路请看[AcWing]791. 高精度加法(C++实现)模板题,在此不再赘述。 在此题中,可用熟练一下StringBuilder 类的应用。 StringBuffer和StringBulider都是可变长字符串;但是

cloud的博客 465
上一篇: java数据结构与算法刷题-----LeetCode66:加一
下一篇: java数据结构与算法刷题-----LeetCode100:相同的树
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值