LeetCode 415 字符串相加 简单

2023-10-29 18:44

本文主要是介绍LeetCode 415 字符串相加 简单,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目 - 点击直达

  • 1. 415 字符串相加 简单
    • 1. 题目详情
      • 1. 原题链接
      • 2. 题目要求
      • 3. 基础框架
    • 2. 解题思路
      • 1. 思路分析
      • 2. 时间复杂度
      • 3. 代码实现

1. 415 字符串相加 简单

1. 题目详情

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

1. 原题链接

LeetCode 415 字符串相加 简单

2. 题目要求

示例 1:
输入:num1 = “11”, num2 = “123”
输出:“134”

示例 2:
输入:num1 = “456”, num2 = “77”
输出:“533”

示例 3:
输入:num1 = “0”, num2 = “0”
输出:“0”

提示:
1 <= num1.length, num2.length <= 104
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零

3. 基础框架

● Cpp代码框架

class Solution {
public:string addStrings(string num1, string num2) {}
};

2. 解题思路

1. 思路分析

( 1 ) (1) (1) 大整数运算时使用整型变量存储数据很容易导致溢出,一般都会存放在字符串中,在字符串中进行运算,运算方式需要我们自己进行设计,加法就是其中的一种运算;
( 2 ) (2) (2) 以符合我们正常思维的方式,两个数相加总是从低位开始相加,每次相加的结果处理成进位(除10)和本位(模10),从低位到高位都是如此;
对于长度不相等的两个数来说:长度较长的数的未参与相加的高位相当于是与长度较短的数的对应高位(其值看做0)依次按照上述规则相加作为结果;
( 3 ) (3) (3) 把得到的本位(从低位开始相加的结果位)依次尾插到空字符串中,相加结束后如果进位是1则需要再尾插一个字符1,之后字符串内的内容就是相加结果的倒序(左低位右高位),只需再次把字符串逆置一次就是所需结果(左高位右低位);
在这里插入图片描述

2. 时间复杂度

O ( ) O() O()

3. 代码实现

class Solution {
public:string addStrings(string num1, string num2) {// 1 2 3 4 5// 1 2 3// 1 2 3 4 5// 0 0 1 2 3string ret;int l1 = num1.size() - 1, l2 = num2.size() - 1;// 进位int carry = 0;while(l1 < num1.size() || l2< num2.size()){int n1 = l1 >= 0 ? num1[l1] - '0' : 0;int n2 = l2 >= 0 ? num2[l2] - '0' : 0;int add = n1 + n2 + carry;carry = add / 10;ret += add % 10 + '0';l1--;l2--;}if(carry == 1) ret += '1';reverse(ret.begin(), ret.end());return ret;}
};

T h e The The E n d End End

这篇关于LeetCode 415 字符串相加 简单的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/302625

相关文章

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st

使用EasyExcel实现简单的Excel表格解析操作

《使用EasyExcel实现简单的Excel表格解析操作》:本文主要介绍如何使用EasyExcel完成简单的表格解析操作,同时实现了大量数据情况下数据的分次批量入库,并记录每条数据入库的状态,感兴... 目录前言固定模板及表数据格式的解析实现Excel模板内容对应的实体类实现AnalysisEventLis

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自