首页 > 编程语言 >(算法)⼆进制求和————<字符串—模拟>

(算法)⼆进制求和————<字符串—模拟>

时间:2024-08-26 16:53:24浏览次数:12  
标签:reverse cur2 进制 cur1 求和 ret 算法 string

1. 题⽬链接:67.⼆进制求和

2. 题⽬描述:

3. 解法(模拟⼗进制的⼤数相加的过程):

算法思路:

模拟⼗进制中我们列竖式计算两个数之和的过程。但是这⾥是⼆进制的求和,我们不是逢⼗进⼀,⽽ 是逢⼆进⼀。 

C++算法代码: 

class Solution 
{
public:
    string addBinary(string a, string b) 
    {
        string answer; // 答案
        //翻转两个字符串
        reverse(a.begin(),a.end());
        reverse(b.begin(),b.end());
        int cur1=0,cur2=0;
        int t=0;    //进位
        while(cur1<a.size()||cur2<b.size()||t)
        {
            if(cur1<a.size())
            {
                t+=a[cur1++]-'0';
            }
            if(cur2<b.size())
            {
                t+=b[cur2++]-'0';
            }
            answer+=to_string(t%2);
            t/=2;
        }
        //翻转答案
        reverse(answer.begin(),answer.end());
        return answer;
    }
};

Java算法代码:

class Solution
{
	public String addBinary(String a, String b)
	{
		StringBuffer ret = new StringBuffer();
		int cur1 = a.length() - 1, cur2 = b.length() - 1, t = 0;
		while (cur1 >= 0 || cur2 >= 0 || t != 0)
		{
			if (cur1 >= 0) t += a.charAt(cur1--) - '0';
			if (cur2 >= 0) t += b.charAt(cur2--) - '0';
			ret.append((char)('0' + (char)(t % 2)));
			t /= 2;
		}
		ret.reverse();
		return ret.toString();
	}
}

标签:reverse,cur2,进制,cur1,求和,ret,算法,string
From: https://blog.csdn.net/2301_79580018/article/details/141568240

相关文章

  • (算法)最⻓回⽂⼦串————<字符串—中⼼扩散>
    1.题⽬链接:5.最⻓回⽂⼦串 2.题⽬描述:3.解法(中⼼扩散):算法思路:枚举每⼀个可能的⼦串⾮常费时,有没有⽐较简单⼀点的⽅法呢?对于⼀个⼦串⽽⾔,如果它是回⽂串,并且⻓度⼤于2,那么将它⾸尾的两个字⺟去除之后,它仍然是个回⽂串。如此这样去除,⼀直除到⻓度⼩于等于2时呢?⻓度......
  • 【AI大模型算法工程师就业指南】—— 高薪就业策略,转行大模型领域的诚挚建议!
    从ChatGPT到新近的GPT-4,GPT模型的发展表明,AI正在向着“类⼈化”⽅向迅速发展。GPT-4具备深度阅读和识图能⼒,能够出⾊地通过专业考试并完成复杂指令,向⼈类引以为傲的“创造⼒”发起挑战。现有的就业结构即将发⽣重⼤变化,社会⽣产⼒的快速提升将催⽣新的⾏业和岗位机会。如......
  • 算法:双指针
    题目:复写零虽然题目说必须要就地但是我们可以先试试异地然后再想办法优化成本地算法讲解:异地可以定义两个指针让它们分别指向本地和异地,当本地指针指向零时这时候就往异地写入两个零其余就照常写,说完异地做法那我们应该如何优化成就地做法呢?就地本地也要定义两个指针往......
  • Python集成学习和随机森林算法使用详解
    概要集成学习是一种通过组合多个模型来提高预测性能的机器学习方法。它通过将多个弱学习器的结果结合起来,形成一个强学习器,从而提升模型的准确性和稳健性。随机森林(RandomForest)是集成学习中一种非常流行且有效的算法,特别适用于分类和回归任务。本文将详细介绍Python中如何......
  • 代码训练营 Day9 | 151.翻转字符串里的单词 | 认识KMP算法
    151.翻转字符串里的单词这道题的难度在于如何高效率的处理空格对于python来说不能实现空间O(1)的复杂度,不过对于其他语言来说下面思路可以使用双指针方法同时指向数组的头部循环遍历整个字符串直到数组末尾快指针不能为空,因为快指针是要获取字母的,慢指针是用来获取新的字......
  • 免费分享一套Java协同过滤推荐算法的SpringBoot+Vue(图书)商城系统【论文+源码+SQL脚
    大家好,我是java1234_小锋老师,看到一个不错的Java协同过滤推荐算法的SpringBoot+Vue(图书)商城系统,分享下哈。项目视频演示【免费】Java协同过滤推荐算法的SpringBoot+Vue(图书)商城系统Java毕业设计_哔哩哔哩_bilibili项目介绍伴随着Internet的蓬勃发展,电子商务也取得了......
  • 排序算法
    冒泡排序冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。......
  • 国密算法简介
    加密算法公开密钥长度分组长度分类加密强度其他SM1否128128对称密码AESSM2是128128非对称密码大于RSA基于ECC,加密强度和运算速度均大于RSASM3是128128单向散列密码MD5校验结果256SM4是128128对称密码(分组密码)AESSM9是128128......
  • 堆排序算法及优化(java)
    目录1.1引言1.2堆排序的历史1.3堆排序的基本原理1.3.1堆的概念1.3.2堆排序的过程1.3.3堆调整1.3.4堆排序算法流程1.4堆排序的Java实现1.4.1简单实现1.4.2代码解释1.4.3优化实现1.4.4代码解释1.5堆排序的时间复杂度1.5.1分析1.5.2证明1.6堆排序......
  • 算法与数据结构——内存与缓存
    内存与缓存数组和链表两种数据结构分别代表了“连续存储”和“分散存储”两种物理结构。实际上,物理结构在很大程度上决定了程序对内存和缓存的使用效率,进而影响算法程序的整体性能。计算机存储设备计算机中包括三种类型的存储设备:硬盘(harddisk)、内存(random-accessmemory,RAM)、......