【LeetCode每日一题】——415.字符串相加

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【解题思路】
  • 八【时空频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 字符串

二【题目难度】

  • 简单

三【题目编号】

  • 415.字符串相加

四【题目描述】

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

五【题目示例】

  • 示例 1:

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

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

    • 输入:num1 = “0”, num2 = “0”
    • 输出:“0”

六【题目提示】

  • 1 < = n u m 1. l e n g t h , n u m 2. l e n g t h < = 1 0 4 1 <= num1.length, num2.length <= 10^4 1<=num1.length,num2.length<=104
  • n u m 1 num1 num1 n u m 2 num2 num2 都只包含数字 0 − 9 0-9 09
  • n u m 1 num1 num1 n u m 2 num2 num2 都不包含任何前导零

七【解题思路】

  • 我们只需要模拟十进制加法的过程即可
  • 从后向前遍历两个字符串
  • 进行加法运算,并计算得到进位
  • 然后根据进位继续向下运算,得到每一对值的计算结果
  • 如果某一个加数计算完毕,对其补零继续运算,直到运算结束
  • 注意最后一次计算可能会有进位,所以需要特殊判断
  • 具体细节可以参考下面的代码
  • 最后返回结果即可

八【时空频度】

  • 时间复杂度: O ( m a x ( m , n ) ) O(max(m, n)) O(max(m,n)) m m m n n n分别为字符串1和字符串2的长度
  • 空间复杂度: O ( 1 ) O(1) O(1)

九【代码实现】

  1. Java语言版
class Solution {
    public String addStrings(String num1, String num2) {
        // 分别定义两个字符串的索引指向末尾
        int i = num1.length() - 1;
        int j = num2.length() - 1;
        // 保持进位
        int add = 0;
        // 保存结果
        StringBuilder res = new StringBuilder();
        // 字符串相加
        while (i >= 0 || j >= 0) {
            // 获取两个加数
            int temp1 = (i >= 0) ? num1.charAt(i) - '0' : 0;
            int temp2 = (j >= 0) ? num2.charAt(j) - '0' : 0;
            // 根据进位计算当前位的和
            int temp = temp1 + temp2 + add;
            // 计算进位
            add = temp / 10;
            // 计算当前位的求和值
            res.insert(0, temp % 10);
            // 向前继续求和
            i--;
            j--;
        }
        // 返回结果(注意:最后一次计算可能会有进位,需要特殊判断)
        if (add != 0) {
            res.insert(0, add);
        }
        return res.toString();
    }
}
  1. Python语言版
class Solution:
    def addStrings(self, num1: str, num2: str) -> str:
        # 分别定义两个字符串的索引指向末尾
        i = len(num1) - 1
        j = len(num2) - 1
        # 保持进位
        add = 0
        # 保存结果
        res = ""
        # 字符串相加
        while i >= 0 or j >= 0:
            # 获取两个加数
            temp1 = int(num1[i]) if i >= 0 else 0
            temp2 = int(num2[j]) if j >= 0 else 0
            # 根据进位计算当前位的和
            temp = temp1 + temp2 + add
            # 计算进位
            add = temp // 10
            # 计算当前位的求和值
            res = str(temp % 10) + res
            # 向前继续求和
            i -= 1
            j -= 1
        # 返回结果(注意:最后一次计算可能会有进位,需要特殊判断)
        return "1" + res if add else res
  1. C++语言版
class Solution {
public:
    string addStrings(string num1, string num2) {
        // 分别定义两个字符串的索引指向末尾
        int i = num1.length() - 1;
        int j = num2.length() - 1;
        // 保持进位
        int add = 0;
        // 保存结果
        string res = "";
        // 字符串相加
        while (i >= 0 || j >= 0) {
            // 获取两个加数
            int temp1 = (i >= 0) ? num1[i] - '0' : 0;
            int temp2 = (j >= 0) ? num2[j] - '0' : 0;
            // 根据进位计算当前位的和
            int temp = temp1 + temp2 + add;
            // 计算进位
            add = temp / 10;
            // 计算当前位的求和值
            res = char((temp % 10) + '0') + res;
            // 向前继续求和
            i--;
            j--;
        }
        // 返回结果(注意:最后一次计算可能会有进位,需要特殊判断)
        if (add) {
            return '1' + res;
        }
        return res;
    }
};

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. Python语言版
    在这里插入图片描述

  3. C++语言版
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Why SAP TM?

最近发现跟 SAP TM 的集成越来越多了&#xff0c;并且发现这模块还挺大&#xff0c;很难一下子理解。TM&#xff08;Transportation Management&#xff09;- 顾名思义就是“运输管理”。起初很难想象为啥 SAP 会浪费大量的时间和精力开发“运输管理”&#xff0c;从而只是为了…

开源鸿蒙 5.0 正式版发布

在2024年的开放原子开发者大会上&#xff0c;开源鸿蒙5.0版本正式发布啦&#xff01;这个版本是一个比较大的升级&#xff0c;性能和功能都上了一个新台阶&#xff0c;让我们一起来看看都有哪些亮点。 首先&#xff0c;开源鸿蒙这个项目&#xff0c;从最初的700万行代码&#x…

直流有刷电机多环控制(PID闭环死区和积分分离)

直流有刷电机多环控制 提高部分-第8讲 直流有刷电机多环控制实现(1)_哔哩哔哩_bilibili PID模型 外环的输出作为内环的输入&#xff0c;外环是最主要控制的效果&#xff0c;主要控制电机的位置。改变位置可以改变速度&#xff0c;改变速度是受电流控制。 实验环境 【 &…

Odrive源码分析(四) 位置爬坡算法

Odrive中自带一个简单的梯形速度爬坡算法&#xff0c;本文分析下这部分代码。 代码如下&#xff1a; #include <cmath> #include "odrive_main.h" #include "utils.hpp"// A sign function where input 0 has positive sign (not 0) float sign_ha…

电视大全 1.3.8|汇聚多频道资源,秒切换流畅播放

电视大全TV版是一款功能丰富的TV端直播软件&#xff0c;由悠兔电视的同一开发者打造。最新版本更新了更多频道&#xff0c;包括央视、卫视和地方频道等&#xff0c;提供了多线路流畅播放体验&#xff0c;并支持节目回看、线路选择、开机自启等功能。该应用免登录且无购物频道&a…

JAVAweb学习日记(二)JavaScript

一、概念 二、JavaScript引入方式 三、JavaScript书写语法 输出语句&#xff1a; 变量&#xff1a; 数据类型、运算符、流程控制语句&#xff1a; 数据类型&#xff1a; 运算符&#xff1a; 字符串如果是 数字字符构成&#xff0c;先把读到的数字转为数字类型&#xff0c;后续…

深圳龙岗戴尔dell r730xd服务器故障维修

深圳龙岗一台DELL POWEREDGE R730XD服务器系统故障问题处理&#xff1a; 1&#xff1a;客户工厂年底产线整改&#xff0c;时不时的会意外断电&#xff0c;导致服务器也频繁停机&#xff0c; 2&#xff1a;多次异常停机后导致服务器开机后windows server系统无法正常启动了&…

Ansible 批量管理华为 CE 交换机

注&#xff1a;本文为 “Ansible 管理华为 CE 交换机” 相关文章合辑。 使用 CloudEngine - Ansible 批量管理华为 CE 交换机 wsf535 IP 属地&#xff1a;贵州 2018.02.05 15:26:05 总体介绍 Ansible 是一个开源的自动化运维工具&#xff0c;AnsibleWorks 成立于 2012 年&a…

2024年Python最新下载安装教程,附详细图文,持续更新

大家好&#xff0c;我是Python老安&#xff0c;今天为大家带来的是Windows Python3下载、安装教程&#xff0c;适用于 Python3 所有版本&#xff0c;包括 Python3.7,Python33.8,Python33.10 等版本。希望对大家有所帮助 Python目前已支持所有主流操作系统&#xff0c;在Linux,…

《点点之歌》“意外”诞生记

世界是“点点”的&#xff0c;“点点”是世界的。 (笔记模板由python脚本于2024年12月23日 19:28:25创建&#xff0c;本篇笔记适合喜欢诗文的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 …

网络安全检测

实验目的与要求 (1) 帮助学生掌握木马和入侵的防护和检测方法、提高学习能力、应用能力和解决实际问题的能力。 (2) 要求学生掌握方法, 学会应用软件的安装和使用方法, 并能将应用结果展示出来。 实验原理与内容 入侵检测是通过对计算机网络或计算机系统中若干关键点收集信…

c++------------------函数

函数定义 语法格式 函数定义包括函数头和函数体。函数头包含返回类型、函数名和参数列表。函数体是用花括号{}括起来的代码块&#xff0c;用于实现函数的功能。例如&#xff0c;定义一个计算两个整数之和的函数&#xff1a; int add(int a, int b) {return a b; }这里int是返回…

Java WEB:从起源到现代的传奇之旅

Java Web 起源于上世纪 90 年代&#xff0c;随着网络和浏览器的飞速发展&#xff0c;Java 为应对动态处理网页的需求&#xff0c;推出了 Servlet 技术。 1. Servlet 出现之前 在 Servlet 出现之前&#xff0c;用户请求主要是静态资源&#xff0c;如 html、css 等。此时的网络…

社区管理系统:实现社区信息数字化管理的实践

3.1可行性分析 开发者在进行开发系统之前&#xff0c;都需要进行可行性分析&#xff0c;保证该系统能够被成功开发出来。 3.1.1技术可行性 开发该社区管理系统所采用的技术是vue和MYSQL数据库。计算机专业的学生在学校期间已经比较系统的学习了很多编程方面的知识&#xff0c;同…

DataV的安装与使用(Vue3版本)

1、DataV(vue3)地址&#xff1a;DataV Vue3TSVite版 | DataV - Vue3 2、使用 npm install kjgl77/datav-vue3 安装 3、全局引入。 4、此时就可以按需使用了~

隐藏指定文件/文件夹和自动提示功能消失解决方案

一. 隐藏指定文件/文件夹 Idea中隐藏指定文件或指定类型文件 Setting → File Types → Ignored Files and Folders输入要隐藏的文件名&#xff0c;支持*号通配符回车确认添加 二. 自动提示功能消失解决方案 指定SpringBoot配置文件 File → Project Structure → Facets选…

springboot474基于web的垃圾分类回收系统(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统垃圾分类回收系统信息管理难度大&#xff0c;容错率低&am…

最优二叉搜索树【东北大学oj数据结构10-4】C++

题面 最优二叉搜索树是由 n 个键和 n1 个虚拟键构造的二叉搜索树&#xff0c;以最小化搜索操作的成本期望值。 给定一个序列 Kk1​,k2​,...,kn​&#xff0c;其中 n 个不同的键按排序顺序 &#xff0c;我们希望构造一个二叉搜索树。 对于每个关键 ki​&#xff0c;我们有一个…

jsp-servlet开发

STS中开发步骤 建普通jsp项目过程 1.建项目&#xff08;非Maven项目&#xff09; new----project----other----Web----Dynamic Web Project 2.下载包放到LIB目录中,如果是Maven项目可以自动导包&#xff08;pom.xml中设置好&#xff09; 3.设置工作空间&#xff0c;网页…

easyExcel导出大数据量EXCEL文件,前端实现进度条或者遮罩层

需求&#xff1a;页面点击导出&#xff0c;先按照页面条件去数据库查询&#xff0c;然后将查询到的数据导出。 问题&#xff1a;由于查询特别耗时&#xff0c;所以点击之后页面会看上去没有反应 方案1&#xff1a;就在点击之后在页面增加了一个进度条&#xff0c;等待后端查询…