C++用string实现字符串相加

. - 力扣(LeetCode)  -》》》》》题目链接

实现思路:计算数字符串长度并用数组的方式计算出字符位置,用字符的ask码+‘0’计算出字符本身。

class Solution {
public:string addStrings(string num1, string num2) {string str;int end1 = num1.size()-1 , end2 = num2.size()-1;int next = 0;while(end1 >= 0 || end2 >= 0)//开始条件{int a1 = end1 >= 0 ? num1[end1--] -'0' : 0;int a2 = end2 >= 0 ? num2[end2--] -'0' : 0;int  ret =a1 + a2 + next;next = ret / 10; //余数ret = ret % 10; //进位数str.insert(0, 1, '0' +ret);}if(next == 1)str.insert(str.begin() , '1');return str;}   
};

求出字符本身后用string库中自带的insert   表示在下标为0的位置处插入大小为1的字符 

并if判断是否到最后有进位 

 注意时间复杂度为

那应该从那几个方面提高时间复杂度那

  1. 在方法一中是都是在下标为零的位置插入,每插入一次就会移动一次。--》头插在逆置
  2. 每几次相加后都会开一份空间 ---》开一次

 

#define _CRT_SECURE_NO_WARNINGS 1
class Solution {
public:string addStrings(string num1, string num2) {string str;str.reserve(max(num1.size(), num2.size()) + 1);int end1 = num1.size() - 1, end2 = num2.size() - 1;int next = 0;while (end1 >= 0 || end2 >= 0){int a1 = end1 >= 0 ? num1[end1--] - '0' : 0;int a2 = end2 >= 0 ? num2[end2--] - '0' : 0;int ret = a1 + a2 + next;next = ret / 10;ret = ret % 10;//   str += ('0' + ret); //尾插str.insert(str.begin(),'0'+ret);//用法一//str.insert(0, 1, '0' +ret);//用法二}if (next == 1)str += '1';/// str.insert(str.begin() , '1');reverse(str.begin(), str.end());//逆置return str;}
};

reserve 迭代器区间
扩容有消耗 reserve  直接一次性开到最大

 

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

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

相关文章

03 Oracle进程秘籍:深度解析Oracle后台进程体系

文章目录 Oracle进程秘籍:深度解析Oracle后台进程体系一、Oracle后台进程概览1.1 DBWn(Database Writer Process)1.2 LGWR(Log Writer Process)1.3 SMON(System Monitor Process)1.4 PMON&#…

【大数据学习 | kafka高级部分】文件清除原理

2. 两种文件清除策略 kafka数据并不是为了做大量存储使用的,主要的功能是在流式计算中进行数据的流转,所以kafka中的数据并不做长期存储,默认存储时间为7天 那么问题来了,kafka中的数据是如何进行删除的呢? 在Kafka…

浏览器存储策略解析(三)Local/sessionStorage实战:如何查看本地浏览器上数据

物理意义上的localStorage/sessionStorage在哪里 我们都知道,localStorage存于本地,sessionStorage存于会话,这是见名知意可以得到的。但是在物理层面他们究竟存储在哪里呢? localStorage和sessionStorage一样,是存储…

设计模式讲解02—责任链模式(Chain)

1. 概述 定义:责任链模式是一种行为型模式,在这个模式中,通常创建了一个接收者对象的链来处理请求,该请求沿着链的顺序传递。直到有对象处理该请求为止,从而达到解耦请求发送者和请求处理者的目的。 解释:责…

判断二叉搜索树(递归)

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。binary search tree (BST) 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 …

【系统设计】高效的分布式系统:使用 Spring Boot 和 Kafka 实现 Saga 模式

在现代分布式系统中,管理跨多个服务的长事务至关重要。传统的分布式事务解决方案往往面临性能瓶颈和复杂性问题,而 Saga 模式 作为一种灵活高效的解决方案,逐渐受到开发者的青睐。本文将探讨如何利用 Spring Boot 和 Kafka 实现 Saga 模式&am…

私有化视频平台EasyCVR海康大华宇视视频平台视频诊断技术是如何实时监测视频质量的?

在现代视频监控系统中,确保视频流的质量和稳定性至关重要。随着技术的进步,视频诊断技术已经成为实时监测视频质量的关键工具。这种技术通过智能分析算法对视频流进行实时评估和处理,能够自动识别视频中的各种质量问题,并给出相应…

JAVA题目笔记(十三) 爬虫

一、网络爬取 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.regex.Matcher; import java.util.regex.Pattern;public class Main {public static v…

探索现代软件开发的五大趋势

在快速变化的技术领域,软件开发正经历着前所未有的变革。随着新工具、框架和编程语言的不断涌现,开发人员必须保持与时俱进,以确保他们的技能和知识库不会过时。本文将探讨当前软件开发领域的五大趋势,以及它们如何塑造未来的技术…

大语言模型(LLM)量化基础知识(一)

请大家关注我的知乎博客:- 派神 - - 知乎 随着大型语言模型 (LLM) 的参数数量的增长,与其支持硬件(加速器内存)增长速度之间的差距越来越大,如下图所示: 上图显示,从 2017 年到 2022 年,语言模…

谨慎使用assert的原因

使用 assert 进行调试和错误检查确实有其优点,但在某些情况下可能会引发一些问题,尤其是在嵌入式系统或特定的应用场景中。下面是 assert 的潜在问题和使用注意事项: 1. 在生产环境中的副作用 问题:assert 通常用于开发和调试阶段…

使用VBA宏合并多个Excel文件的Sheet页

使用VBA宏合并多个Excel文件的Sheet页 在日常的Excel数据处理工作中,我们经常需要将多个Excel文件中的工作表合并到一个Excel文件中。这种操作可以极大地提高数据处理效率,但如果文件数量较多,手动合并会非常繁琐。本文将介绍如何使用VBA宏来…

【comfyui教程】ComfyUI 现已支持 Stable Diffusion 3.5 Medium!人人都能轻松上手的图像生成利器

前言 ComfyUI 现已支持 Stable Diffusion 3.5 Medium!人人都能轻松上手的图像生成利器 大家翘首以盼的Stable Diffusion 3.5 Medium模型终于来了!就在今天,Stability AI 正式推出了这款“亲民版”平衡模型,让创作者们得以在消费…

大模型微调技术 --> LoRA 系列之 AdaLoRA

AdaLoRA 1.摘要 之前的微调方法(如低秩更新)通常将增量更新的预算均匀地分布在所有预训练的权重矩阵上,并且忽略了不同权重参数的不同重要性。结果,微调结果不是最优的。 为了弥补这一差距,我们提出了AdaLoRA,它根据权重矩阵的…

带你搞懂红黑树的插入和删除

文章目录 1. 红黑树1.1 红黑树的概念1.2 红黑树的性质1.3 红黑树节点的定义1.4 红黑树的插入找到插入的位置调节平衡 1.5 红黑树的删除删除节点平衡调整 1.6 红黑树和AVL树的比较 1. 红黑树 1.1 红黑树的概念 红黑树也是一种二叉搜索树,但是在每一个节点上增加了一个存储位表…

揭秘全向轮运动学:机动艺术与上下位机通信的智慧桥梁

✨✨ Rqtz 个人主页 : 点击✨✨ 🌈Qt系列专栏:点击 🎈Qt智能车上位机专栏: 点击🎈 本篇文章介绍的是有关于全向轮运动学分析,单片机与上位机通信C代码以及ROS里程计解算的内容。 目录 大纲 ROS(机器人操作系统&…

Python 函数类型

普通函数匿名函数(Lambda函数)高阶函数内置函数递归函数闭包函数装饰器函数方法 8.1. 实例方法 8.2. 类方法 8.3. 静态方法 1. 普通函数 最基本的函数类型,通过 def 关键字定义。 def add(a, b):return a bprint(add(3, 5)) # 输出: 82…

移远通信推出八款天线新品,覆盖5G、4G、Wi-Fi和LoRa领域

近日,全球领先的物联网整体解决方案供应商移远通信宣布,再次推出八款高性能天线新品,进一步丰富其天线产品阵容,更好地满足全球客户对高品质天线的更多需求。具体包括5G超宽带天线YECT005W1A和YECT004W1A、5G天线YECT028W1A、4G天…

深度学习:NAT Decoder 详解

NAT Decoder 详解 非自回归转换器(Non-Autoregressive Transformer, NAT)解码器是一种特殊类型的解码器,设计用来在序列生成任务中加速输出的生成过程。与传统的自回归解码器(如上文所述的AT解码器)不同,N…

【设计模式系列】桥接模式(十三)

一、什么是桥接模式 桥接模式(Bridge Pattern)是一种结构型设计模式,其核心目的是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式主要用于处理那些在设计时无法确定实现细节的场合,或者需要在多个实现之间…