面试热题(字符串相加)

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

输入:num1 = "11", num2 = "123"
输出:"134"

      字符串相加这道题其实对于很多人来说是有挑战性的,因为有进位,所以很多人对此就望而生畏,但是,今天,看完我这篇博客后,你会对你已经的恐惧的烟消云算,我今天准备采取较为简单的方法来解决这道题

       在数学中我们进场用这种进制的方式进行两数的加法运算,我们在字符串中的加法运算也可以运用这种方式去解决问题

 这种方式的对齐方式运算肯定是错误的,所以我们不能从索引为0开始

 所以我们应该从两个字符串的最后一个索引开始,这样才能确定最后结果的准确性

  int i=num1.length()-1;//字符串num1的最后一位的索引int j=num2.length()-1;//字符串的num2的最后一位的索引int carry=0;//进位数

 

 while(i>=0||j>=0){}

       对于字符串,两个字符串的长度有的时候是不一样的,所以我们肯定要对长度短的字符串进行操作,补位,但是直接操作字符串肯定会对算法的性能进行损耗,所以我们在处理的时候做一点小小的改变

 int a=i>=0?(num1.charAt(i--)-'0'):0;int b=j>=0?(num2.charAt(j--)-'0'):0;

        int num=a+b+carry;carry=num/10;int c=num%10;sb.append(c);

 所以我们最后将字符串反转就可以得到最后的结果

源码如下:

       public String addStrings(String num1, String num2) {StringBuilder sb=new StringBuilder();int i=num1.length()-1;int j=num2.length()-1;int carry=0;while(i>=0||j>=0){int a=i>=0?(num1.charAt(i--)-'0'):0;int b=j>=0?(num2.charAt(j--)-'0'):0;int num=a+b+carry;carry=num/10;int c=num%10;sb.append(c);}if(carry==1){sb.append(carry);}return sb.reverse().toString();
}

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

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

相关文章

Java GUI,mybatis实现资产管理系统

Java GUI——资产管理系统 前言:为了做java课设,学了一手Java GUI。感觉蛮有意思的,写写文章,做个视频记录一下。欢迎大家友善指出我的不足 资产管理系统录制视频,从头敲到尾 模块划分 资产信息管理 资产信息查询 …

无涯教程-Perl - 格式化

Perl使用称为“formats”的模板来输出内容。要使用Perl的格式函数,必须先定义一种格式,然后才能使用该格式写入格式化的数据。 定义格式 以下是定义Perl格式的语法- format FormatName fieldline value_one, value_two, value_three fieldline value…

将matlab中工作区的数据保存为.mat文件及加载.mat数据

将matlab工作区中的数据保存为.mat文件 如数据a a[1 1 2 3 2 4];一、工作区数据 二、保存为.mat文件 利用save保存数据a到data.mat文件中 save(data.mat,a);三、加载数据 Iload(data.mat)

Gitlab CI/CD笔记-第二天-使用maven打包并且使用主机套接字进行构建并push镜像。

一、安装gitlab-runner 1.可以是linux也可以是docker的 2.本文说的是docker安装部署的。 二、直接上.gitlab-ci.yml stages: # List of stages for jobs, and their order of execution - build-image build-image-job: stage: build-image image: harbor.com:543/docke…

【Linux】系统内核中System.map中字段含义解释

可以通过命令行过来初始化内容 cat System.map-4.18.0-193.el8.x86_64 | grep pci | grep initcall "T":表示该符号是一个全局函数,可以被其他模块或文件访问。 "D":表示该符号是一个全局数据对象,可以被其…

jenkins流水线

1.拉取代码 https://gitee.com/Wjc_project/yygh-parent.git2、项目编译 mvn clean package -Dmaven.test.skiptrue ls hospital-manage/target3、构建镜像 ls hospital-manage/target docker build -t hospital-manage:latest -f hospital-manage/Dockerfile ./hospital-ma…

Leetcode 977. 有序数组的平方

题目: Leetcode 977. 有序数组的平方 描述: 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序 思路: 双指针法 数组其实是有序的, 只不过负数平方之…

[保研/考研机试] KY187 二进制数 北京邮电大学复试上机题 C++实现

描述 大家都知道,数据在计算机里中存储是以二进制的形式存储的。 有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。 你能帮帮小明吗?并且,小…

有人管一管小天才电话手表吗?

作者 | 张未 来源 | 洞见新研社 潮流果然是个圈,曾经风靡2008年的“摇一摇”重回我们的视野当中。 这个对于成年人有些过时的产物,以儿童手表为载体,正入侵着小学生的社交圈,成为儿童的“社交密码”。 “碰一碰”加好友&#x…

form 表单恢复初始数据

写表单的时候&#xff0c;想做到&#xff0c;某个操作时&#xff0c;表单恢复初始数据 this.$options.data().form form 是表单的对象 <template><div><el-dialog title"提示" :visible.sync"dialogVisible"><el-form :model"…

【计算机视觉】关于图像处理的一些基本操作

目录 图像平滑滤波处理均值滤波计算过程python实现 高斯滤波计算过程python实现 中值滤波计算过程python实现 图像的边缘检测Robert算子计算过程python实现 图像处理腐蚀算子计算过程python实现 Hog&#xff08;梯度方向直方图&#xff09;特征计算流程&#xff1a;Hog的特征维…

【指针模拟实现库函数strlen】

指针模拟实现库函数strlen 1.库函数strlen含义 strlen是用来计算字符串长度的。&#xff08;不包含’\0’) 2.assert断言介绍 assert.h 头⽂件定义了宏 assert() &#xff0c;⽤于在运⾏时确保程序符合指定条件&#xff0c;如果不符合&#xff0c;就报 错终⽌运⾏。这个宏常常…

【数据结构】单链表OJ题(二)

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;数据结构 &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、链表分割 &#x1f4a1;方法一&#xff1a; 二、链表的回文 &#x…

Elastic Stack 8.9:更快的跨集群搜索和指标聚合

作者&#xff1a;Tyler Perkins, Gilad Gal, Teresa Soler, Shani Sagiv, Bernhard Suhm, George Kobar Elastic Stack 8.9 在多个方面实现了显着的性能改进&#xff1a;Kibana 中更快的跨集群搜索、Elasticsearch 更快的聚合&#xff0c;以及更快、更相关的向量搜索&#xff0…

cpu的架构

明天继续搞一下cache,还有后面的, 下面是cpu框架图 开始解释cpu 1.控制器 控制器又称为控制单元&#xff08;Control Unit&#xff0c;简称CU&#xff09;,下面是控制器的组成 1.指令寄存器IR:是用来存放当前正在执行的的一条指令。当一条指令需要被执行时&#xff0c;先按…

自定义类型详解

目录 前言 本期内容介绍 一、结构体 1.1什么是结构体&#xff1f; 1.2结构体的声明 1.3结构的特殊声明 1.4结构体变量的定义和初始化 1.5结构体成员的访问 1.6结构体传参 1.7结构体的自引用 1.8结构体内存对齐 1.9为什么有内存对齐&#xff1f; 1.a修改默认对齐数…

网工内推 | 自动化企业招网工,包吃,最高15K,厂商认证优先

01 影儿集团 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、负责公司及分支站点网络架构设计规划、组建、优化及日常运维管理工作&#xff1b; 2、负责公司网络安全、网络质量及网络和安全设备等检查与监控&#xff1b; 3、负责网络设备安全策略的配置及优化&#…

Jmeter(四) - 从入门到精通 - 创建网络测试计划(详解教程)

1.简介 在本节中&#xff0c;您将学习如何创建基本的 测试计划来测试网站。您将创建五个用户&#xff0c;这些用户将请求发送到JMeter网站上的两个页面。另外&#xff0c;您将告诉用户两次运行测试。因此&#xff0c;请求总数为&#xff08;5个用户&#xff09;x&#xff08;2…

react搭建在线编辑html的站点——引入grapes实现在线拖拉拽编辑html

文章目录 ⭐前言⭐搭建react ts项目⭐引入grapes 插件⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于react搭建在线编辑html的站点。 react 发展历史 React是由Facebook开发的一种JavaScript库&#xff0c;用于构建用户界面。React最初发布于2013年&…

C++/Qt读写ini文件

今天介绍C/Qt读写ini文件&#xff0c;ini文件一般是作为配置文件来使用&#xff0c;比如一些程序的一些默认参数会写在一个ini文件中&#xff0c;程序运行时会进行对应的参数读取&#xff0c;详细可以查看百度ini文件的介绍。https://baike.baidu.com/item/ini%E6%96%87%E4%BB%…