【打卡】牛客网:BM86 大数加法

题目分析:

因为是大数,所以不能:将string转为int,进行相加后,再int转为string。

而是直接模拟加法过程。

我写的:

一些细节:

  1. 需要反转。因为字符串从左到右遍历,加法从右往左遍历。
  2. 处理不同长度的字符串时,
    1. 法一:短的字符串补充‘0’
    2. 法二:相同位数先进行相加,再对长的字符串进行进位处理。(我采用)
  3. 本题用到:int和char之间的转换:
    1. int转char,用char = int + '0'
    2. char转int,用int = char - '0'
  4. 此外,补充int和string之间的转换:
    1. int转string,用string = to_string(int)
    2. string转int,用int = stoi(string)
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 计算两个数之和* @param s string字符串 表示第一个整数* @param t string字符串 表示第二个整数* @return string字符串*/string solve(string s, string t) {// write code hereint n1 = s.size();int n2 = t.size();if(n1 == 0)return t;if(n2 == 0)return s;reverse(s.begin(), s.end());reverse(t.begin(), t.end());int n; //取小的string ans; //取长的if(n1 < n2){n = n1;ans = t;}else{n = n2;ans = s;}int flag = 0;//相同部分for(int i = 0; i < n; i++){int temp = s[i] - '0' + t[i] - '0' + flag;flag = temp / 10;temp = temp % 10;ans[i] = temp + '0';}//多出部分for(int i = n; i < ans.size(); i ++){int temp = ans[i] - '0' + flag;flag = temp / 10;temp = temp % 10;cout<<temp<<endl;ans[i] = temp + '0';}//最后,如果进位flag还是1,还需要if(flag == 1)ans = ans + "1"; //string可以直接用“+”拼接reverse(ans.begin(), ans.end());return ans;}
};

模板的:

 值得采用的点:

  1. if(s长度<t长度) swap(s,t),从而保证s为长的,t为短的。
    1. 我另外定义了一个string ans = 二者中长的字符串。
  2. 一个for循环搞定,遍历长的字符串。在for循环内部,判断短的字符串是否有值,如果有值,让temp累加即可。
    1. 我用了两个for循环。
  3. 模板没有用反转,所以在取下标的时候比较麻烦。
    1. 我用了反转,更简单。但是速度会慢一些。

 

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

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

相关文章

QT第3天

如上图界面&#xff0c;需求如下&#xff1a; 1、根据名字添加水果&#xff0c;并设置好单价 2、切换文件查看模式 3、点击任意水果可以显示单价 4、重量改变时&#xff0c;总价自动显示 //widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <Q…

RH850P1X芯片学习笔记-Flash Memory

文章目录 FeaturesClock Supply Block DiagramFlash SizeMemory ConfigurationRegistersRegister Base AddressList of RegistersRegister Reset Condition 与Flash Memory相关的操作模式Functional OverviewOption BytesOPBT0 — Option Byte 0OPBT1 — Option Byte 1OPBT2 —…

【CSS】保持元素宽高比

保持元素的宽高比&#xff0c;在视频或图片展示类页面是一个重要功能。 本文介绍其常规的实现方法。 实现效果 当浏览器视口发生变化时&#xff0c;元素的尺寸随之变化&#xff0c;且宽高比不变。 代码实现 我们用最简单的元素结构来演示&#xff0c;实现宽高比为4&#xf…

鸿蒙Harmony是如何影响Android工程师的呢?

其实鸿蒙在2019就已经出来了&#xff0c;那时候还是套壳Android的。从2023年9月的发布会上&#xff0c;华为宣布鸿蒙原生应用全面启动、HarmonyOS NEXT亮相以后&#xff0c;围绕着纯血鸿蒙展开的鸿蒙应用生态发展迅猛&#xff0c;目前已经有包括社交、金融、影音、游戏、资讯、…

【Java万花筒】时钟精灵:Java日期库全景剖析

时间漫步者&#xff1a;深入Java时间库实战 前言 在现代软件开发中&#xff0c;处理日期与时间是一个常见而又具有挑战性的任务。Java为我们提供了强大的日期与时间处理库&#xff0c;这些库不仅使日期与时间的操作更加方便&#xff0c;而且满足了各种复杂的需求。本文将深入…

docker-compose和docker compose的区别

在docker实际使用中&#xff0c;经常会搭配Compose&#xff0c;用来定义和运行多个 Docker 容器。使用时会发现&#xff0c;有时候的指令是docker-compose&#xff0c;有时候是docker compose&#xff0c;下面给出解释。 docker官方文档&#xff1a;https://docs.docker.com/c…

ArrayBlockingQueue的使用

异步日志打印模型概述 在高并发、高流量并且响应时间要求比较小的系统中同步打印日志已经满足不了需求了&#xff0c;这是因为打印日志本身是需要写磁盘的&#xff0c;写磁盘的操作会暂时阻塞调用打印日志的业务线程&#xff0c;这会造成调用线程的rt增加。 如图所示为同步日…

WorkPlus领先企业即时通信软件,提升团队沟通效率的利器

在企业工作中&#xff0c;高效沟通是推动团队协作和工作效率的关键。而企业即时通信软件成为了实现高效沟通的利器。作为一款领先的企业即时通信软件&#xff0c;WorkPlus以其卓越的性能和独特的功能&#xff0c;提升团队沟通效率&#xff0c;助力企业实现高效协作。 为什么选择…

豆包ai介绍

豆包是字节跳动基于云雀模型开发的AI工具&#xff0c;具有强大的语言处理能力和广泛的应用场景&#xff0c;无论是在学习、工作、生活中&#xff0c;都能派上用场。 豆包可以帮助打工人和创作者提升效率&#xff0c;完成各种工作任务&#xff0c;又能扮演各类AI角色进行高情商…

win10安装electron卡住

切换镜像源&#xff0c;需要设置ELECTRON_MIRROR才行&#xff0c;win10操作如下&#xff1a; set ELECTRON_MIRRORhttp://npm.taobao.org/mirrors/electron/ npm install --save-dev electron

C++右值引用,右值引用与const引用的区别

1.右值与左值 左值&#xff1a;可以取地址的、有名字的变量&#xff0c;有持久性&#xff1b;右值&#xff1a;一般是不可寻址的常量&#xff0c;或在表达式求值过程中创建的无名临时对象&#xff0c;短暂性的。 2.右值引用 C11新增了另一种引用——右值引用。这种引用可指向…

[学习笔记]刘知远团队大模型技术与交叉应用L1-NLPBig Model Basics

本节主要介绍NLP和大模型的基础知识。提及了词表示如何从one-hot发展到Word Embedding。语言模型如何从N-gram发展成预训练语言模型PLMs。然后介绍了大模型在NLP任务上的表现&#xff0c;以及它遵循的基本范式。最后介绍了本课程需要用到的编程环境和GPU服务器。 一篇NLP方向的…

从零开始做题:逆向wdb_2018_2nd_easyfmt

1.题目信息 2.解题分析 格式化字符串漏洞 如何确定偏移 Do you know repeater? 输入AAAA.%p.%p.%p.%p.%p.%p.%p.%p.%p.%p.%p.%p. 输出AAAA.0xffffd658.0x64.0xf7ffdc08.0xf7ffcd00.0xffffd77c.0x41414141.0x2e70252e.0x252e7025.0x70252e70.0x2e70252e.0x252e7025.0x70252…

City Terrace Pack

“城市与露台资源包” 的主要特点:• 属于系列的一部分。• 极为逼真和现代化的城市。• 高度优化的低多边形和逼真资源。• 可用于 Oculus、GearVR、Vive、Daydream。• 可用于低端和高端移动设备。• 灵感来自于现代建筑和设计。• 36 种不同的摩天大楼和建筑物。• 其中每个…

【Windows 10 / 11】彻底卸载Microsoft Edge

彻底卸载Microsoft Edge的方法 第一种 打开C盘&#xff0c;定位到Edge安装目录&#xff0c;一般是“C:\Program Files (x86)\Microsoft\Edge\Application\”进入对应当前Edge版本号的文件夹&#xff0c;并进入“Installer”文件夹内找到“setup.exe”按下“shift”键并点击鼠标…

【ARM 嵌入式 编译系列 10.4 -- elf 文件各个段信息查看】

文章目录 elf 文件各个段信息查看 elf 文件各个段信息查看 在进行代码编译完成的时候&#xff0c;我们会经常见到下面信息, 这个是怎么实现的呢&#xff1f; text data bss dec hex filename11818 2120 5736 19674 4cda ra4m2.elf使用 arm-none-eab…

第九部分 使用函数 (二)

目录 一、字符串处理函数 1、subst 2、patsubst 3、strip 4、findstring 5、filter 6、filter-out 7、sort 8、word 9、wordlist 10、words 11、firstword 12、字符串函数实例 一、字符串处理函数 1、subst $(subst <from>,<to>,<text>) 名称…

【2023 我的编程之旅】

前言 转眼 2024 年都过去 14 天了。回顾 2023 有太多技术上的思考以及人生的感悟&#xff0c;接下来趁着 CSDN 官方活动&#xff0c;顺便记录下来。 技术的价值 与现在的年轻人一心只想搞钱不同&#xff0c;刚毕业的时候&#xff0c;我的梦想是进入一家有实力的科技企业&…

如何创建并格式化硬盘分区?

一般将新硬盘连接到计算机后&#xff0c;需先创建并格式化硬盘分区。否则在磁盘管理中会显示为“未分配空间”&#xff0c;并在文件资源管理器中不可见。那我们如何在硬盘上创建新分区&#xff0c;并对新分区进行格式化&#xff1f; 方法1. 通过命令提示符 首先&#xff0c;我…

两周掌握Vue3(三):全局组件、局部组件、Props

文章目录 一、全局组件1.创建全局组件2.在main.js中注册全局组件3.使用全局组件 二、局部组件1.创建局部组件2.在另一个组件中注册、使用局部组件 三、Props1.定义一个子组件2.定义一个父组件3.效果 代码仓库&#xff1a;跳转 本博客对应分支&#xff1a;03 一、全局组件 Vue…