经典题记录 字符串相加/相乘

news2024/11/18 17:25:04

1. LeetCode 415 字符串相加

在这里插入图片描述

代码一:代码简短,但需要借助额外的一个string来保存结果,更占用内存。

class Solution {
public:
    string addStrings(string num1, string num2) {
        string ans="";
        int size1=num1.size();
        int size2=num2.size();
        int size=max(size1,size2);
        int flag=0;  //表示进位
        for(int i=size1-1,j=size2-1;i>=0||j>=0||flag>0;i--,j--){
            int x=i<0?0:num1[i]-'0';
            int y=j<0?0:num2[j]-'0';
            flag=flag+x+y;
            char ch=(flag%10)+'0';
            ans=ch+ans;
            flag=flag/10;
        }
        return ans;
    }
};

在这里插入图片描述

代码二:相比代码一行数多点,但是运行时间短一点,内存占用更少。

string add(string str1,string str2){ //字符串相加
    int size1 = str1.size();
    int size2 = str2.size();
    if(size1>size2){
        for (int i = 0; i < size1 - size2;i++)
            str2 = "0" + str2;
    }
    if(size2>size1){
        for (int i = 0; i < size2 - size1;i++)
            str1 = "0" + str1;
    }
    int flag = 0;
    int size = max(size1, size2);
    for (int i = size - 1; i >= 0;i--){
        flag = flag + (str1[i] - '0') + (str2[i] - '0');
        str1[i] = (flag % 10)+'0';
        flag /= 10;
    }
    if(flag){
        char x = flag + '0';
        str1 = x + str1;
    }
    return str1;
}

在这里插入图片描述

LeetCode 43 字符串相乘

在这里插入图片描述

代码:在这里插入图片描述

class Solution {
public:
    string add(string str1,string str2){ //数字字符串相加
        string str="";
        int flag=0;
        for(int i=str1.size()-1,j=str2.size()-1;i>=0||j>=0;i--,j--){
            int x =i<0?0:str1[i]-'0'; //i等于0表示最高位了,i<0时前面没有数字了
            int y =j<0?0:str2[j]-'0'; //j等于0表示最高位了,j<0时前面没有数字了
            flag+=x+y; //当前位的和
            char ch=flag%10+'0';
            flag/=10;
            str=ch+str;
        }
        if(flag){
            char x = flag + '0';
            str = x + str;
        }
        return str;
    }

    string multiply(string num1, string num2) { //数字字符串相乘
        if(num1=="0"||num2=="0")
            return "0";
        string ans=""; 
        for(int i=num2.size()-1;i>=0;i--){
            char ch=num2[i];
            string tmp="";
            int flag=0;
            for(int j=num1.size()-1;j>=0;j--){
                int x=num1[j]-'0';
                int y=ch-'0';
                int n=x*y+flag;
                flag=n/10;//进位
                char a=n%10+'0';
                tmp=a+tmp;
            }
            if(flag){
                char x=flag+'0';
                tmp=x+tmp;
            }
            for(int k=0;k<num2.size()-1-i;k++) //后面补零
                tmp+="0";
            ans=add(ans,tmp);
        }
        return ans;
    }
};

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

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

相关文章

php之导入导出csv文件

一、导入csv文件 1、创建导入页面 <!DOCTYPE html> <html lang"zh-CN"> <meta charset"UTF-8"> <head><title>文件提交表单</title> </head> <body> <form action"test5.php" method"…

嵌入式裸机架构的探索与崩塌

为什么会想着探索下嵌入式裸机的架构呢&#xff1f;是因为最近写了一个项目&#xff0c;项目开发接近尾声时&#xff0c;发现了一些问题&#xff1a; 1、项目中&#xff0c;驱动层和应用层掺杂在一起&#xff0c;虽然大部分是应用层调用驱动层&#xff0c;但是也存在驱动层调用…

6年Android开发前10月的总结,写给正在求职的安卓开发

进入大厂工作对许多人来说已经是一种挑战&#xff0c;但只要充分准备&#xff0c;很多问题都可以逐步解决。当然&#xff0c;运气也起到了一定的作用&#xff0c;但最终还是与自身的努力密不可分。运气是实力的一部分&#xff0c;因为自助者天助。 每到10月进行总结时&#xff…

华为ICT——第二章-数字图像处理私人笔记

目录 1&#xff1a;计算机视觉&#xff1a;​编辑 2&#xff1a;计算机视觉应用&#xff1a;​编辑 3&#xff1a;计算机视界核心问题&#xff1a;​编辑 4&#xff1a;相关学科&#xff1a; 5&#xff1a;计算机视觉与人工智能&#xff1a; 最成熟的技术方向是图像识别 6…

Django应用及分布式路由

Django应用及分布式路由 应用 应用在Django项目中一个完全独立的业务模块&#xff0c;可以包含自己的路由&#xff0c;视图&#xff0c;模板&#xff0c;模型 应用配置 在这里面添加你自定义的应用 INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.cont…

如何使用docker快速部署MinDoc文档系统

MinDoc是非常优秀的知识分享系统&#xff0c;但是很多刚接触的人会一脸懵逼&#xff0c;而且官方文档写的也并不清晰&#xff0c;所以和大家分享一下快速部署MinDoc的方法。 首先docker环境先自行安装好&#xff0c;这里不再赘述。 拉取docker镜像&#xff1a; docker pull …

解决 Github port 443 : Timed out

解决方法 打开代理页面 打开 设置 --> 网络与Internet --> 查找代理 记录下当前系统代理的 IP 地址和端口号 如上图所示&#xff0c;地址与端口号为&#xff1a;127.0.0.1:7890 注意修改成自己的IP和端口号 git config --global http.proxy http://127.0.0.1:7890 gi…

面试总结之微服务篇

一、概览 1、微服务常用组件 微服务给系统开发带来了诸多问题和挑战&#xff0c;如服务间通信和调用的复杂性、数据一致性和事务管理、服务治理和版本管理等&#xff0c;为解决应对这些问题和挑战&#xff0c;各种微服务组件应运而生微服务的常见组件和实现&#xff1a; 1…

解决react报错“JSX 表达式必须具有一个父元素“

现象如下&#xff1a; 原因&#xff1a; 新插入的dom元素跟已有的dom元素平级了&#xff0c;必须创建一个共有的根元素 解决办法&#xff1a; 使用<> </>标签作为根元素&#xff0c;把所有子元素包裹起来 <> ....原代码 </> 问题解决&#xff01;…

sun.reflect.annotation.TypeNotPresentExceptionProxy

解决方法 找到TypeNotPresentExceptionProxy类,在sun.reflect.annotation下在TypeNotPresentExceptionProxy方法里打断点debug项目,查看断点错误 如图是缺少redis依赖导致的错误 https://www.cnblogs.com/qingmuchuanqi48/p/11716706.html

Spring学习笔记7 Bean的生命周期

Spring其实就是一个管理Bean对象的工厂.它负责对象的创建,对象的销毁. 这样我们才可以知道在哪个时间节点上调用了哪个类的哪个方法,知道代码该写在哪里 Bean的生命周期之粗略5步 Bean生命周期的管理可以参考Spring的源码: AbstractAutowireCapableBeanFactory Bean的生命周期…

乐得瑞推出1拖2功率分配快充线方案,支持数据传输

随着PD3.1协议的市场应用越来越多&#xff0c;一些充电器的Type-C接口的输出功率达到百瓦及以上&#xff0c;如何充分利用好这类充电器设备&#xff0c;乐得瑞电子推出1拖2快充线缆解决方案&#xff0c;支持智能功率分配策略。 上图是乐得瑞1拖2功率分配快充线样线实物&#…

力扣刷题-链表-设计链表

题意&#xff1a; 在链表类中实现这些功能&#xff1a; get(index)&#xff1a;获取链表中第 index 个节点的值。如果索引无效&#xff0c;则返回-1。 addAtHead(val)&#xff1a;在链表的第一个元素之前添加一个值为 val 的节点。插入后&#xff0c;新节点将成为链表的第一个节…

哈希 -- 开散列(哈希桶)

拉链法 这里我们要是用string&#xff08;string来做key&#xff09;来取模&#xff0c;再增加一个模板参数&#xff0c;配一个取模的仿函数即可

leetcode 133. 克隆图

leetcode 133. 克隆图 给你无向 连通 图中一个节点的引用&#xff0c;请你返回该图的 深拷贝&#xff08;克隆&#xff09;。 图中的每个节点都包含它的值 val&#xff08;int&#xff09; 和其邻居的列表&#xff08;list[Node]&#xff09;。 class Node { public int val;…

Flex布局是什么?

一、Flex布局是什么&#xff1f; Flex是Flexible Box的缩写&#xff0c;意为”弹性布局”&#xff0c;用来为盒状模型提供最大的灵活性。 注意&#xff0c;设为Flex布局以后&#xff0c;子元素的float、clear和vertical-align属性将失效。 二、基本概念 采用Flex布局的元素…

基于JavaWeb(Servlet+jsp)的个人通讯录管理系统(含实验报告)

基于JavaWeb&#xff08;Servletjsp&#xff09;的个人通讯录管理系统&#xff08;含实验报告&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 本项目为简单的基于Javaweb实现的个人通讯录管理系统&#xff0c;实现主要功能为用户注册登录、首页展示、用户联…

C++——如何正确的使用STL中的vector?

什么是vector&#xff1f; 在STL&#xff08;标准模板库&#xff09;中&#xff0c;vector是一种动态数组容器&#xff0c;可根据需要自动增长或缩小。它可以存储任意类型的元素&#xff0c;并且支持快速的随机访问。 vector是表示可变大小数组的序列容器vector采用的是连续的…

Java面试题整理(带答案)

目录 TCP和UDP的区别 get和post的区别 Cookie和session的区别 Java的基本类型有哪些&#xff1f; 抽象类和接口区别&#xff1f; 对于堆栈的理解 和equals区别 如何理解Java多态&#xff1f; 创建线程都有哪些方式 脏读、不可重复度、幻读都是什么&#xff1f; Jav…

YUM 升级 PHP7

文章目录 YUM 升级 PHP71. 查看当前 PHP 信息2. YUM 安装 PHP73. 查看 PHP 版本4. 启动PHP-FPM YUM 升级 PHP7 参考地址&#xff1a;网站地址 参考地址&#xff1a;网站地址 1. 查看当前 PHP 信息 # 查看 PHP 版本信息 php -v# 查看 yum 源中 PHP 信息 yum list | grep php2. …