【优选算法】(第三十二篇)

news2024/10/10 16:34:15

目录

⼆进制求和(easy)

题目解析

讲解算法原理

编写代码

字符串相乘(medium)

题目解析

讲解算法原理

编写代码


⼆进制求和(easy)

题目解析

1.题目链接:. - 力扣(LeetCode)

2.题目描述

给你两个⼆进制字符串 a 和 b ,以⼆进制字符串的形式返回它们的和。
⽰例 1:
输⼊:a = "11", b = "1"
输出:"100"
⽰例 2:
输⼊:a = "1010", b = "1011"
输出:"10101"

讲解算法原理

解法(模拟⼗进制的⼤数相加的过程):
算法思路:

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

编写代码

c++算法代码:

class Solution
{
public:
 string addBinary(string a, string b) 
 {
 string ret;
 int cur1 = a.size() - 1, cur2 = b.size() - 1, t = 0;
 while(cur1 >= 0 || cur2 >= 0 || t)
 {
 if(cur1 >= 0) t += a[cur1--] - '0';
 if(cur2 >= 0) t += b[cur2--] - '0';
 ret += t % 2 + '0';
 t /= 2;
 }
 reverse(ret.begin(), ret.end());
 
 return ret;
 }
};

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();
 }
}

字符串相乘(medium)

题目解析

1.题目链接:. - 力扣(LeetCode)

2.题目描述

给定两个以字符串形式表⽰的⾮负整数num1和num2,返回num1和num2的乘积,它们的乘积也表⽰为字符串形式。
注意:不能使⽤任何内置的BigInteger库或直接将输⼊转换为整数。⽰例1:
输⼊:num1="2",num2="3"
输出:"6"
⽰例2:
输⼊:num1="123",num2="456"
输出:"56088"

讲解算法原理

解法(⽆进位相乘然后相加,最后处理进位):
算法思路:

整体思路就是模拟我们⼩学列竖式计算两个数相乘的过程。但是为了我们书写代码的⽅便性,我们选择⼀种优化版本的,就是在计算两数相乘的时候,先不考虑进位,等到所有结果计算完毕之后,再去考虑进位。如下图:

 

编写代码

C++算法代码:

class Solution
{
public:
 string multiply(string n1, string n2) 
 {
 // 解法:⽆进位相乘后相加,然后处理进位
 int m = n1.size(), n = n2.size();
 reverse(n1.begin(), n1.end());
 reverse(n2.begin(), n2.end());
 vector<int> tmp(m + n - 1);
 // 1. ⽆进位相乘后相加
 for(int i = 0; i < m; i++)
 for(int j = 0; j < n; j++)
 tmp[i + j] += (n1[i] - '0') * (n2[j] - '0');
 
 // 2. 处理进位
 int cur = 0, t = 0;
 string ret;
 while(cur < m + n - 1 || t)
 {
 if(cur < m + n - 1) t += tmp[cur++];
 ret += t % 10 + '0';
 t /= 10;
 }
 // 3. 处理前导零
 while(ret.size() > 1 && ret.back() == '0') ret.pop_back();
 reverse(ret.begin(), ret.end());
 return ret;
 }
};

java算法代码:

class Solution
{
 public String multiply(String num1, String num2) 
 {
 int m = num1.length(), n = num2.length();
 char[] n1 = new StringBuffer(num1).reverse().toString().toCharArray();
 char[] n2 = new StringBuffer(num2).reverse().toString().toCharArray();
 int[] tmp = new int[m + n - 1];
 // 1. ⽆进位相乘后相加
 for(int i = 0; i < m; i++)
 for(int j = 0; j < n; j++)
 tmp[i + j] += (n1[i] - '0') * (n2[j] - '0');
 
 // 2. 处理进位
 int cur = 0, t = 0;
 StringBuffer ret = new StringBuffer();
 while(cur < m + n - 1 || t != 0)
 {
 if(cur < m + n - 1) t += tmp[cur++];
 ret.append((char)(t % 10 + '0'));
 t /= 10;
 }
 // 3. 处理进位
 while(ret.length() > 1 && ret.charAt(ret.length() - 1) == '0') 
 ret.deleteCharAt((ret.length() - 1));
 return ret.reverse().toString();
 }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2202503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言-常见文件操作函数详解(fgetc,fputc,fgets,fputs,fscanf,fprintf,fread,fwrite)

&#x1f30f;个人博客&#xff1a;尹蓝锐的博客 希望文章能够给到初学的你一些启发&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏支持一下笔者吧&#xff5e; 顺序读写数据常用函数 函数名调用形式功能返回值fgetcfgetc(fp)从指针变量fp指向的文件中读…

诺贝尔物理学奖向机器学习与神经网络致敬,科学边界的跨越与未来的启示

2024年诺贝尔物理学奖首次颁发给机器学习与神经网络领域的研究者&#xff0c;这一历史性事件打破了人们对诺贝尔物理学奖的传统认知&#xff0c;激起了全球学术界、科技界的广泛讨论。这一变化不仅标志着科学边界的延伸&#xff0c;也体现出人工智能技术对现实世界的深远影响。…

剪切走的照片:高效恢复与预防策略

一、剪切走的照片现象描述 在日常的数字生活中&#xff0c;照片作为记录生活点滴、工作成果的重要载体&#xff0c;其重要性不言而喻。然而&#xff0c;有时我们可能会遇到一种令人头疼的情况&#xff1a;原本打算通过剪切操作将照片移动到另一个位置&#xff0c;却意外地发现…

Java 8 的内存结构

Java8内存结构图 虚拟机内存与本地内存的区别 Java虚拟机在执行的时候会把管理的内存分配成不同的区域&#xff0c;这些区域被称为虚拟机内存&#xff0c;同时&#xff0c;对于虚拟机没有直接管理的物理内存&#xff0c;也有一定的利用&#xff0c;这些被利用却不在虚拟机内存…

Qt5.15.2静态编译 MinGW with static OpenSSL

如果想用VS2017编译,可参考:Qt5.15.2静态编译 VS2017 with static OpenSSL 一.环境 系统:Windows 10 专业版 64位 编译器:MinGW 8.1.0 第三方工具:perl,ruby和python PS:经验证,用MinGW 12.1.0来编译Qt5.15.2会报错 我用Phthon 2.7.18虽然可以编过,但是强烈建议Pyth…

0.0.0.0 127.0.0.1等几个特殊的IP地址

0.0.0.0 127.0.0.1 localhost 255.255.255.0 255.255.255.255 这都是些什么地址&#xff0c;代表了什么意思。 网络为系统服务器&#xff0c;系统需要网络。 这些地址在系统和网络都存在&#xff0c;作用和意思甚至基本相同。 一、0.0.0.0 在路由中&#xff1a;0.0.0.0表…

【面试宝典】深入Python高级:直戳痛点的题目演示(上)

目录 &#x1f354; 你知道深浅拷⻉的区别吗&#xff1f; &#x1f354; 字典反转&#xff0c;列表反转的实现&#xff1f; &#x1f354; 装饰器是什么&#xff0c;什么场景⽤到装饰器&#xff0c;举个例⼦&#xff1f; &#x1f354; 装饰器的实质是什么…

定时关机(python)

内容 为了更简单地实现定时关机&#xff0c;不必去记繁琐的命令行&#xff0c;于是搞了一个gui出来 基于python和Windows命令行实现&#xff0c;核心为&#xff1a; shutdown -s -t 60 代码 # -*- coding: utf-8 -*- # Environment PyCharm # File_name autoShutdown…

【教学类-36-10】20241010职业抽卡(midjounery-niji)(涂色、裁剪、游戏)

背景需求 昨天在户外玩了角色游戏&#xff0c;受道具所限&#xff08;只有烧烤做饭锅子材料&#xff09;&#xff0c;所有的孩子都只玩了烧烤店、娃娃家做饭的内容&#xff0c;扮演的都是爸妈、厨师等工作 今天从以前的纸类学具中找出一套数量相对较多的“职业涂色卡” 学具代…

2024中国新媒体技术展 | 蓝海创意云vLive虚拟直播即将亮相!

​​ 2024中国新媒体大会由中央宣传部指导&#xff0c;中华全国新闻工作者协会、湖南省人民政府联合主办&#xff0c;旨在推动媒体深度融合发展&#xff0c;促进新闻事业高质量发展&#xff0c;为中国式现代化贡献力量。中国新媒体技术展&#xff08;CMTE&#xff09;是中国新…

设计模式、系统设计 record part05

行为型模式 模板方法模式、解释器模式是类型为模式&#xff0c; 模板方法模式 模板方法&#xff08;Template Method&#xff09; 抽象类&#xff08;Abstract Class&#xff09; 抽象方法&#xff08;Abstract Method&#xff09; 具体方法&#xff08;Concrete Method&#x…

详细解读“霸王面”战术

“霸王面”战术是指在没有得到雇主面试通知的情况下&#xff0c;强行加入面试&#xff0c;以此争取工作机会的求职策略。以下将以3000字左右的篇幅&#xff0c;通过生动形象的例子详细解释这一战术。 一、背景介绍 在当今竞争激烈的就业市场中&#xff0c;求职者需要经历网申…

2.1 App测试与发布指南

欢迎大家订阅【软件测试】 专栏&#xff0c;开启你的软件测试学习之旅&#xff01; 文章目录 前言1 系统架构2 APP测试范围3 APP发布流程4 发布策略 前言 在当今数字化时代&#xff0c;移动应用程序&#xff08;APP&#xff09;和Web应用程序是两种主要的软件交付方式。本文详…

arm imx6ull docker启动失败问题查找与解决 内核配置相关

1、增加POSIX Message qeue&#xff1a;could not get initial namespace: no such file or directory CONFIG_POSIX_MQUEUEy 2、增加namespace failed to set to initial namespace CONFIG_NAMESPACESy 3、创建网络失败&#xff0c;veth配置&#xff1a;docker create endp…

40条经典ChatGPT论文指令,圈定选题和进行论文构思

目录 1、用ChatGPT圈定选题范围2、用ChatGPT生成研究方法和思路3、用ChatGPT扩展论文观点和论证4、用ChatGPT辅助论文结构设计5、如何直接使用ChatGPT4o、o1、OpenAI Canvas6、OpenAI Canvas增强了啥&#xff1f;7、编程功能增强 &#x1f447; ChatGPT o1网页入口在文末&#…

光路科技TSN交换机:驱动自动驾驶技术革新,保障高精度实时数据传输

自动驾驶技术正快速演进&#xff0c;对实时数据处理能力的需求激增。光路科技推出的TSN&#xff08;时间敏感网络&#xff09;交换机&#xff0c;在比亚迪最新车型中的成功应用&#xff0c;显著推动了这一领域的技术进步。 自动驾驶技术面临的挑战 自动驾驶系统需整合来自雷达…

CentOS系统解压缩.7z后缀的文件

先安装工具 sudo yum install p7zip p7zip-plugins 解压缩 7z x mvtec3d.7z x参数表示解压并保持原有目录结构。 有报错 7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 p7zip Version 16.02 (localeen_US.UTF-8,Utf16on,HugeFileson,64 bits,64 CP…

马志威新剧《黑色月光》开播 “海王”梁正贤角色再升级

由优酷、TVB联合出品&#xff0c;77工作室制作的《黑色月光》于10月9日在优酷视频上线播出。该剧由知名导演钟澍佳担任总监制&#xff0c;杨茜尧、马志威等TVB演员主演&#xff0c;故事以公关行业为背景&#xff0c;讲述了职场女性余满月曾被富豪蒋家害得家破人亡&#xff0c;精…

C++ 算法学习——1.8 单调队列算法

单调队列&#xff08;Monotonic Queue&#xff09;是一种特殊类型的队列&#xff0c;通常用于解决一些数组或序列相关的问题。和单调栈类似&#xff0c;单调队列也具有一些特定的性质&#xff0c;在解决一些问题时非常有用。以下是关于单调队列的一些重要点&#xff1a; 定义&a…

《14天从0到1学Java》第二天之01Java中的分支结构if语句

Hello&#xff0c;大家好&#xff0c;我是Feri&#xff0c;一枚十多年的程序员&#xff0c;研究生&#xff0c;关注我&#xff0c;且看一个平凡的程序员如何在自我成长&#xff0c;也为各位小伙伴提供编程相关干货知识&#xff0c;希望在自我蜕变的路上&#xff0c;我们一起努力…