当前位置: 首页 > article >正文

C++ 大数相加(简要版)

#include <algorithm>
#include <iterator>
class Solution {
public:/*** 计算两个数之和* @param s string字符串 表示第一个整数* @param t string字符串 表示第二个整数* @return string字符串*/string solve(string s, string t) {// 处理空字符串的情况,如果 t 为空,则直接返回 sif(t.size() == 0){return s;}// 如果 s 为空,则直接返回 tif(s.size() == 0){return t;}// 将两个字符串反转,方便从低位到高位相加reverse(s.begin(), s.end());reverse(t.begin(), t.end());// 确保 s 的长度不小于 t 的长度,方便处理进位if(s.size() < t.size()){swap(s, t);}// 将 t 的长度扩展到与 s 相同,缺失的位补充为 0while(t.size() < s.size()){t += '0';}// 获取 s 的长度,用于遍历int size = s.size();// 用于存储最终结果string ret;// 记录进位int cnt = 0;// 遍历每一位进行加法计算for(int i = 0; i < size; i++){// 计算当前位置的和,并加上上一次的进位// 通过 s[i] 和 t[i] 的字符转换为整数进行加法// '0' 是为了将字符转为数字,字符 '0' 对应整数值 0// 计算的 tmp 是字符加法结果(可能带进位)char tmp = s[i] + t[i] - '0' + cnt;// 如果和大于 '9',则需要产生进位if(tmp > '9'){tmp -= 10;  // 将超过 9 的部分扣除,保留个位cnt = 1;    // 设置进位为 1}else {cnt = 0;    // 不需要进位,cnt 设置为 0}// 将当前计算的字符加入到结果字符串中ret += tmp;}// 如果遍历完所有位后仍有进位,则需要在结果末尾添加 1if(cnt == 1){ret += '1';}// 最后将结果字符串反转,得到正确的顺序reverse(ret.begin(), ret.end());// 返回最终计算的和return ret;}
};

详细中文注释解释:

  1. 空字符串处理

    • 如果 t 为空,直接返回 s。如果 s 为空,直接返回 t。这是为了避免对空字符串进行无意义的加法。

  2. 字符串反转

    • 由于加法是从低位到高位进行的,因此我们首先将两个字符串反转,方便从低位开始相加。

  3. 调整字符串长度

    • 如果 st 短,则交换它们的位置,保证 s 总是较长的字符串。

    • 然后将 t 的长度扩展到与 s 相同,缺少的位补充为 0。这样做的目的是确保两个字符串的长度一致,方便逐位加法。

  4. 逐位加法

    • 通过一个循环,逐位计算两个字符串的和。每次加法会计算当前位的和,同时考虑上一个计算中的进位(cnt)。

    • 如果当前位的和大于 9,则产生进位。否则,不产生进位。

  5. 处理进位

    • 如果计算完所有位后仍然有进位(cnt == 1),则在结果字符串末尾加上 1

  6. 反转结果

    • 最后,反转 ret 字符串,得到正确的加法结果。

举个例子:

假设 s = "123"t = "987",我们将按以下步骤处理:

  1. 反转 st,得到 "321""789"

  2. 执行逐位加法:3 + 7 = 10,进位为 1;2 + 8 + 1 = 11,进位为 1;1 + 9 + 1 = 11,进位为 1。

  3. 结果是 "1110",然后再加上进位,得到最终的结果 "1110"

时间复杂度:

  • 时间复杂度是 O(n),其中 n 是两个字符串中较长字符串的长度。我们需要逐位遍历并进行加法操作。

相关文章:

C++ 大数相加(简要版)

#include <algorithm> #include <iterator> class Solution { public:/*** 计算两个数之和* param s string字符串 表示第一个整数* param t string字符串 表示第二个整数* return string字符串*/string solve(string s, string t) {// 处理空字符串的情况&#xf…...

SVMSPro分布式综合安防管理平台-->以S3存储革新,开启智能安防新纪元

SVMSPro分布式综合安防管理平台–>以S3存储革新&#xff0c;开启智能安防新纪元 在数字化转型浪潮下&#xff0c;企业安防管理正面临海量数据存储、跨区域协同以及数据安全的严峻挑战。如何实现高效、弹性、低成本的存储扩容&#xff1f;如何确保关键录像数据万无一失&…...

KV Cache大模型推理加速功能

KV Cache KV Cache是大模型标配的推理加速功能&#xff0c;也是推理过程中&#xff0c;显存资源巨大开销的元凶之一。在模型推理时&#xff0c;KV Cache在显存占用量可达30%以上。 目前大部分针对KV Cache的优化工作&#xff0c;主要集中在工程上。比如著名的VLLM&#xff0c…...

速盾:高防CDN节点对收录有影响吗?

引言 搜索引擎收录是网站运营中至关重要的环节&#xff0c;它直接影响着网站的曝光度和流量。近年来&#xff0c;随着网络安全威胁的增加&#xff0c;许多企业开始采用高防CDN&#xff08;内容分发网络&#xff09;来保护其网站免受DDoS攻击和其他形式的网络攻击。然而&#x…...

脑科学与人工智能的交叉:未来智能科技的前沿与机遇

引言 随着科技的迅猛发展&#xff0c;脑科学与人工智能&#xff08;AI&#xff09;这两个看似独立的领域正在发生深刻的交汇。脑机接口、神经网络模型、智能机器人等前沿技术&#xff0c;正带来一场跨学科的革命。这种结合不仅推动了科技进步&#xff0c;也在医疗、教育、娱乐等…...

Linux 系统中从源码编译安装软件

以下是 Linux 系统中 从源码编译安装软件 的详细步骤和注意事项&#xff0c;帮助你掌握这一高级操作技能&#xff1a; 一、编译安装的核心流程 1. 下载源码包&#xff08;通常为 .tar.gz/.tar.bz2/.tar.xz&#xff09; 2. 解压源码包 3. 进入源码目录 4. 配置编译参数&#xf…...

docker 运行自定义化的服务-后端

docker 运行自定义化的服务-前端-CSDN博客 运行自定义化的后端服务 具体如下&#xff1a; ①打包后端项目&#xff0c;形成jar包 ②编写dockerfile文件&#xff0c;文件内容如下&#xff1a; # 使用官方 OpenJDK 镜像 FROM jdk8:1.8LABEL maintainer"ATB" version&…...

基于关键字定位的自动化PDF合同拆分

需求背景&#xff1a; 问题描述&#xff1a; 我有一份包含多份合同的PDF文件&#xff0c;需要将这些合同分开并进行解析。 传统方法&#xff08;如以固定页数作为分割点&#xff09;不够灵活&#xff0c;无法满足需求。 现有方法的不足&#xff1a; 网上找到的工具大多依赖手动…...

spring security 使用auth2.0

在 Spring Security 中集成 OAuth 2.0 可以实现安全的第三方认证和资源保护。以下是完整的配置指南和代码示例&#xff1a; 一、OAuth 2.0 核心概念 角色作用资源所有者用户&#xff08;授权访问资源的人&#xff09;客户端应用&#xff08;如Web、移动端&#xff09;授权服务…...

NO.82十六届蓝桥杯备战|动态规划-从记忆化搜索到动态规划|下楼梯|数字三角形(C++)

记忆化搜索 在搜索的过程中&#xff0c;如果搜索树中有很多重复的结点&#xff0c;此时可以通过⼀个"备忘录"&#xff0c;记录第⼀次搜索到的结果。当下⼀次搜索到这个结点时&#xff0c;直接在"备忘录"⾥⾯找结果。其中&#xff0c;搜索树中的⼀个⼀个结点…...

ubuntu 服务器版本常见问题

一、系统安装与初始化 1. 安装过程中断或失败 原因:镜像损坏、硬件兼容性、磁盘分区错误。 解决: 验证 ISO 文件的完整性(计算 SHA256 校验和)。 检查 BIOS/UEFI 设置(禁用 Secure Boot)。 使用手动分区模式,确保根分区(/)和 EFI 分区(如有)正确配置。 2. 系…...

【时时三省】(C语言基础)用switch语句实现多分支选择结构 例题

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 例题&#xff1a; 用switch语句处理菜单命令。在许多应用程序中&#xff0c;用菜单对流程进行控制&#xff0c;例如从键盘输入一个 A 或 a 字符&#xff0c;就会执行A操作&#xff0c;输入一…...

全域数字化:从“智慧城市”到“数字生命体”的进化之路

一、国家战略下的城市数字化浪潮 2024年5月&#xff0c;国家四部委联合发布《关于深化智慧城市发展 推进城市全域数字化转型的指导意见》&#xff0c;明确提出以数据为引擎&#xff0c;系统性重塑城市技术架构与管理流程&#xff0c;推动城市治理迈向“全域协同、数实融合”的…...

Java网络编程干货

1.网络编程是什么 了解 在Java语言中&#xff0c;我们可以使用java.net包下的技术轻松开发出常见的网络应用程序&#xff0c;从而把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统&#x…...

如何在 Spring Boot 项目中使用 MyBatis 进行批量操作以提升性能?

MyBatis 提供了 ExecutorType.BATCH 类型&#xff0c;允许将多个 SQL 语句进行组合&#xff0c;最后统一执行&#xff0c;从而减少数据库的访问频率&#xff0c;提升性能。 以下是如何在 Spring Boot 项目中使用 MyBatis 进行批量操作的关键点&#xff1a; 1. 配置 MyBatis 使…...

基于SSM的线上花店鲜花销售商城网站系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

Python Lambda表达式详解

Python Lambda表达式详解 1. Lambda是什么&#xff1f; Lambda是Python中用于创建匿名函数&#xff08;没有名字的函数&#xff09;的关键字&#xff0c;核心特点是简洁。它适用于需要临时定义简单函数的场景&#xff0c;或直接作为参数传递给高阶函数&#xff08;如map()、f…...

DAPP实战篇:使用web3.js连接合约

说明 本系列内容目录:专栏:区块链入门到放弃查看目录 如果你还没有创建好项目请先查看:《DApp实战篇:先用前端起个项目》,如果你还不知道web3.js是什么请先查看:《DApp实战篇:前端技术栈一览》。 安装 点此查看web3.js官方文档 打开项目根目录,并唤起终端: 键入w…...

linux sar 系统运行状态统计

概述 sar 命令来自英文词组**“System activity reporter”**的缩写&#xff0c;其功能是用于统计系统运行状态。是一个系统活动报告工具&#xff0c;用于收集、报告和保存系统活动信息。它可以帮助系统管理员监控和分析系统性能&#xff0c;识别潜在的性能瓶颈或问题。 实时…...

【C#】一种优雅的基于winform的串口通信管理

serialPort.DataReceived、串口优雅管理 完整《C#串口通信系统》功能清单 Part 1 — SerialPortManager.cs —— 串口核心管理类 using System; using System.IO.Ports; using System.Text; using System.Threading; using System.Windows.Forms;/// <summary> /// 专业…...

ChatGPT之智能驾驶问题讨论

ChatGPT之智能驾驶问题讨论 1. 源由2. 问题&#xff1a;2.1 智能驾驶级别定义&#x1f697; L2&#xff08;部分自动化&#xff0c;Partial Automation&#xff09;&#x1f916; L3&#xff08;有条件自动化&#xff0c;Conditional Automation&#xff09;&#x1f6f8; L4&a…...

K8S-证书过期更新

K8S证书过期问题 K8S证书过期处理方法 Unable to connect to the server: x509: certificate has expired or is not yet valid 1、查看证书有效期&#xff1a; # kubeadm certs check-expiration2、备份证书 # cp -rp /etc/kubernetes /etc/kubernetes.bak3、直接重建证书 …...

蓝桥杯第十五届真题——握手问题

#include<bits/stdc.h> using namespace std; int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int sum0;for(int i7;i<49;i){sumi;}cout<<sum;return 0; }...

5G_WiFi_CE_DFS

目录 一、规范要求 1、法规目录 2、定义 3、运行模式 4、主/从设备相关的运行行为及具体的动态频率选择&#xff08;DFS&#xff09;要求 5、产品角色确定测试项目 6、测试项目 测试项1&#xff1a;信道可用性检查&#xff08;Channel Availability Check&#xff09; …...

第二节:React 基础篇-受控组件 vs 非受控组件

一、场景题&#xff1a;设计一个实时搜索输入框&#xff0c;说明选择依据 受控组件 vs 非受控组件 核心区别 特征受控组件非受控组件数据管理由React状态&#xff08;state&#xff09;控制通过DOM元素&#xff08;ref&#xff09;直接访问更新时机每次输入触发onChange提交…...

springboot 处理编码的格式为opus的音频数据解决方案【java8】

opus编码的格式概念&#xff1a; Opus是一个有损声音编码的格式&#xff0c;由Xiph.Org基金会开发&#xff0c;之后由IETF&#xff08;互联网工程任务组&#xff09;进行标准化&#xff0c;目标是希望用单一格式包含声音和语音&#xff0c;取代Speex和Vorbis&#xff0c;且适用…...

RK3568 基于Gstreamer的多媒体调试记录

文章目录 1、环境介绍2、概念理清3、提前准备4、GStreamer编译5、GStreamer基础介绍6、视频播放初体验7、视频硬编码7.1、h2647.2、h265 8、视频硬解码8.1、解码视频并播放8.2、解码视频并播放带音频 1、环境介绍 硬件&#xff1a;飞凌ok3568-c开发板 软件&#xff1a;原厂rk…...

VS Code 的 .S 汇编文件里面的注释不显示绿色

1. 确认文件语言模式 打开 .S 文件后&#xff0c;查看 VS Code 右下角的状态栏&#xff0c;确认当前文件的识别模式&#xff08;如 Assembly、Plain Text 等&#xff09;。如果显示为 Plain Text 或其他非汇编模式&#xff1a; 点击状态栏中的语言模式&#xff08;如 Plain Te…...

在 Wireshark 中如何筛选数据包

1. 显示过滤器&#xff08;Display Filters&#xff09; 显示过滤器用于 在已捕获的数据包中筛选&#xff0c;语法类似于编程语言中的条件表达式。 &#xff08;1&#xff09;基本过滤 表达式说明ip.addr 192.168.1.1显示所有涉及 192.168.1.1 的 IP 包ip.src 192.168.1.1…...

[MySQL]数据库与表创建

欢迎来到啾啾的博客&#x1f431;。 这是一个致力于构建完善 Java 程序员知识体系的博客&#x1f4da;。 它记录学习点滴&#xff0c;分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。 本篇简单记录…...