在做题中学习(30):字符串相加

思路:

相加时要转换成对应的数字,所以让字符数字-'0'    如‘9’-‘0’=(ASCII)57-48=9

9+1=10,会进1,把进位保存起来,只取0头插到新串里。

头插时要转换对应字符数字,所以让对应的数字+‘0’   如0+'0'=48 =='0'

之后下标往前走依次取值相加(每次都要+进位)。

实现
class Solution 
{
public:string addStrings(string num1, string num2) {int end1=num1.size()-1,end2=num2.size()-1;int next=0;string str;while(end1>=0||end2>=0){int val1 = 0;int val2 = 0;if(end1>=0){val1=num1[end1--]-'0';}if(end2>=0){val2=num2[end2--]-'0';}int ret=val1+val2+next;next=ret/10;ret%=10;str.insert(0,1,ret+'0');}return str;}
};

发现还有用例没通过,可以看出是结束时循环走出来了没有+进位,所以在循环结束后加个判断条件:

if(next==1)
{str.insert(0,1,'1');
}

最后看到用时很长,因为头插的时间复杂度是(n^2)。

优化:

         把头插换成尾插

class Solution 
{
public:string addStrings(string num1, string num2) {int end1=num1.size()-1,end2=num2.size()-1;int next=0;string str;while(end1>=0||end2>=0){int val1 = 0;int val2 = 0;if(end1>=0){val1=num1[end1--]-'0';}if(end2>=0){val2=num2[end2--]-'0';}int ret=val1+val2+next;next=ret/10;ret%=10;str.push_back(ret+'0');}if(next==1){str.push_back('1');}reverse(str.begin(),str.end());return str;}
};

时间复杂度(n)

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

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

相关文章

freetype将字符串制作成位图并显示过程详解

在流媒体项目中字幕显示是不可或缺的一环,一般会有字幕流在视频播放过程中进行显示;不过还有很多情况是从头到尾只在视频的某个区域显示某些文字,例如某个电视台的log;这种也称为字幕,如果想要将这些字符串显示到视频&…

谈谈如何写作(二)

序言 没有什么比一套好理论更有用了。——库尔特勒温 谈谈如何写作系列今天进入第二篇,第一篇请速戳:谈谈如何写作(一) 今天,博主从如何写报告讲起。 Q:如何写报告 如何写报告呢? 当每位盆友接到…

linux进程间通信之信号

摘要 本文旨在研究Linux进程间通信的机制之一:信号。信号是由操作系统来处理的,说明信号的处理在内核态。信号不一定会立即被处理,此时会储存在信 号的信号表中。最后,我们会对这种通信方式的优缺点进行全面的分析,并给…

Arduino驱动LM35线性温度传感器(温湿度传感器)

目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 LM35半导体的温度传感器,可以用来对环境温度进行定性的检测。LM35半导体温度传感器是美国国家半导体公司生产的线性温度传感器。其测温范围是-40℃到150℃,灵敏度为10mV/℃,输出电压与温度成正比。

Linux命令之查看文件和权限修改操作

目录 查看文件 1. cat --- 将文件中的内容打印在输出设备 2. more --- 分页显示文件内容 3.less ---查看文件内容 4. head -- 查看文件前n行内容 5.tail -- 查看指定文件的后n行内容或实时监测文件 6. wc -- 可计算文件的字节数、字数和列数 文件搜索 1.which --- 获取…

柯桥会计培训|中级会计职称,考过中级,可以从事哪些工作?

拿下中级会计证书后,可以从事哪些工作呢?一起来看看吧~ 财务经理 财务经理可以说是会计人梦寐以求的岗位,上可以和老板畅聊公司财务情况,下可以管理整个财务部。但是在财务管理水平日益成为企业核心竞争力的今天,企业…

各类软件docker安装

docker Docker 要求 CentOS 系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本: uname -r 3.10.0-1062.1.2.el7.x86_64 安装 Docker: 安装 Docker:yum -y install dockerkafka和zookeeper docker pull wurstmei…

蓝桥杯 枚举

例题讲解 特别数的和 #include<iostream> using namespace std; bool ifspecial(int n){while(n){if(n%100||n%101||n%102||n%109){return true;} n/10;}return false; } int main(){int n;cin>>n;int sum0;for(int i1;i<n;i){if(ifspecial(i)){sumi;}}cout&l…

在Go编程中调用外部命令的几种场景

1.摘要 在很多场合, 使用Go语言需要调用外部命令来完成一些特定的任务, 例如: 使用Go语言调用Linux命令来获取执行的结果,又或者调用第三方程序执行来完成额外的任务。在go的标准库中, 专门提供了os/exec包来对调用外部程序提供支持, 本文将对调用外部命令的几种使用方法进行总…

物联网AI MicroPython学习之语法 SPI串行外设通信

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; SPI 介绍 模块功能: SPI串行外设驱动 接口说明 SPI - 构建SPI对象 函数原型&#xff1a;SPI(id, baudrate&#xff0c;polarity, phase&#xff0c;sck, mosi, miso)参数说明&#xff1a; 参数类型必选参…

django理解02 前后端分离中的问题

前后端分离相对于传统方式的问题 前后端数据交换的问题跨域问题 页面js往自身程序&#xff08;django服务&#xff09;发送请求&#xff0c;这是浏览器默认接受响应 而请求其它地方是浏览器认为存在潜在危险。自动隔离请求&#xff01;&#xff01;&#xff01; 跨域问题的解决…

【MATLAB】史上最全的5种数据插值算法全家桶

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 大家吃一顿火锅的价格便可以拥有5种数据插值算法&#xff0c;绝对不亏&#xff0c;知识付费是现今时代的趋势&#xff0c;而且都是我精心制作的教程&#xff0c;有问题可随时反馈~也可单独获取某一算法的代码&#xff08…