首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
选钝角的加菲猫很喜欢拱白菜
北京交通大学 电子信息类
发布于北京
关注
已关注
取消关注
@牛一霸:
题解 | #大数加法#
题目:大数加法 描述:以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。 (字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成) 示例1:输入:"1","99",返回值:"100",说明:1+99=100 解法一: 思路分析:首先通读题目,我们应该主要理解的是以字符串的形式读入数字,因为两个整数的相加可能会引发溢出的问题,所以用字符串的格式存储字符串s和t,同时判断字符串的长度,设置一个最大值maxlen表示可能的最大长度为多少,最终通过Ascil值的判断,不断相加,确定各位和进位之间的关系。 具体实例分析:输入:"1","99" 数字 “1” “99” 首先设置slen和tlen表示具体长度,maxlen表示最大长度,设置连续的存储空间 个位上的判断 1 + 9 = 10,有进位,所以个位对10取余为0 十位上的判断 进位1 + 9 = 10,有进位,该位数字为0 百位 进位为1 最后的返回值为“100” 具体C语言代码如下所示: /** *代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 *计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */char* solve(char* s, char* t ) { //strlen字符串的长度 int slen = strlen(s); int tlen = strlen(t); int maxlen = slen > tlen ? slen + 1: tlen + 1; //判断s和t哪个最长 char* res = (char *)calloc(maxlen + 1, sizeof(char)); //calloc()分配所需的内存空间,并返回一个指向它的指针 int i = 0,j = 0,k = 0; int temp = 0; for(i = slen - 1,j = tlen - 1,k = maxlen-1;k >= 0;i--,j--,k--){ int stemp = 0; if(i >= 0){ //for循环判断出所有的字符,然后利用s[]-'0'算出他们的差值 stemp = s[i] - '0'; } int sstemp = 0; if(j >= 0){ sstemp = t[j] - '0'; } temp += stemp + sstemp; res[k] = temp % 10 + '0'; temp = temp / 10; //满十进一位 } if(*res == '0'){ return ++res; } return res;} 因为只循环执行一次,故时间复杂度为O(N),空间复杂度为O(N)。 解法二: 思路分析:我们可以直接使用java中的大数操作BigInteger,直接进行大数之间的运算,可以直接得到最终的结果。 资料显示:java中可以使用BigInteger操作大整数,也可以转换进制。如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作。这些大数都会以字符串的形式传入。 其具体java代码如下所示: import java.util.*;import java.math.*; public class Solution { /** *代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 *计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ public String solve (String s, String t) { // write code here BigInteger biginteger1 = new BigInteger(s); BigInteger biginteger2 = new BigInteger(t); return biginteger1.add(biginteger2).toString(); }} 同时也可以使用python直接进行输出: ##代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可#计算两个数之和# @param s string字符串 表示第一个整数# @param t string字符串 表示第二个整数# @return string字符串#class Solution: def solve(self , s , t ): # write code here return int(s) + int(t); 因为是直接调用的函数,所以其时间复杂度与空间复杂度均为O(1)。
点赞 18
评论 2
全部评论
推荐
最新
楼层
秋招专场
校招火热招聘中
官网直投
相关推荐
憋说了我去改约束了
05-28 10:07
IC验证工程师
实习目的就是偷师学艺!!!
现在越来越后悔当时实习时(数字ic验证)没有把所有能学的东西都学走,比如一些通用的东西,寄存器模型生成脚本,寄存器读写验证case,还有一些复杂验证环境的driver和monitor等等。虽然当时负责的项目内容已经积累了挺多经验,但是要是能再腾出空来学习一下项目文件夹中的其他内容就好了。所以在这也给即将或正在实习的同学们提个醒,一定要应学尽学,能学全学!
点赞
评论
收藏
转发
开挂了的小章鱼很勇敢
05-28 16:50
游戏策划
4399入职体验
入职第一天就感受到同事们的热情,工作氛围一级棒。公司的晋升机会也比较多,有很多内部培训和晋升通道。就是工作节奏比较快,压力较大,需要不断适应和提高自己的工作效率。
投递4399游戏等公司7个岗位 >
点赞
评论
收藏
转发
高天弘
05-24 12:17
已编辑
浙江大学 计算机类
26届将来想走算法岗
将来想找大厂算法岗,求各位大佬指点一下简历 #简历# #算法# #大厂#
点赞
评论
收藏
转发
牛客266932807号
05-16 14:47
电子科技大学 计算机类
oppo 好直白
已违约 这种是不是被拉黑了 秋招也投不了了
点赞
评论
收藏
转发
犬粟
05-23 23:09
华中科技大学 计算机类
结束了,都结束了
奋战三个月终于收获第一个实习offer 感谢节子收留🙏🏻 bg双九,本科非科班,C++/go选手,无实习 3月初开始投 投递41次,简历挂13次,一面挂6次,二面挂2次,三面挂1次,8个石沉大海,4个其他原因结束 身心俱疲,心力交瘁 😭😭😭太难了我的天
点赞
评论
收藏
转发
点赞
收藏
评论
分享
回复帖子
提到的真题
返回内容
全站热榜
1
...
毕业第一课之租房攻略
3.6W
2
...
不要去美化那条自己没走过的路
1.2W
3
...
【奖】这个夏天🍉,和牛牛一起打卡刷题~
8812
4
...
拼多多一面
6030
5
...
为什么都在劝退计算机国企?
4879
6
...
想知道双非的学长学姐都在简历上写什么进大厂了
4097
7
...
Java基础八股(中小厂纯享版)
3436
8
...
5.28校招&实习招聘信息汇总
3175
9
...
没有实习秋招怎么说😭
3032
10
...
幻想时间
3017
正在热议
#
和牛牛一起刷题打卡
#
6693次浏览
568人参与
#
机械制造薪资爆料
#
344137次浏览
4069人参与
#
牛客帮帮团来啦!有问必答
#
1017916次浏览
15585人参与
#
晒一晒我的offer
#
3682917次浏览
57202人参与
#
通信硬件薪资爆料
#
246435次浏览
2325人参与
#
你收到了团子的OC了吗
#
519444次浏览
6186人参与
#
我想象的工作vs实际工作
#
102517次浏览
1658人参与
#
腾讯工作体验
#
148510次浏览
1417人参与
#
来选选带哪个offer回家过年
#
188506次浏览
1801人参与
#
百度工作体验
#
28014次浏览
282人参与
#
如何写一份好简历
#
305285次浏览
4372人参与
#
担心入职之后被发现很菜怎么办
#
33423次浏览
287人参与
#
你的简历改到第几版了
#
325456次浏览
4908人参与
#
23届的你们都什么时候入职?
#
92023次浏览
791人参与
#
通信硬件人笔面经互助
#
138973次浏览
2586人参与
#
你觉得机械有必要实习吗
#
11155次浏览
183人参与
#
现在还是0offer,延毕还是备考
#
402252次浏览
4827人参与
#
浅聊一下我实习的辛苦费
#
94836次浏览
930人参与
#
实习必须要去大厂吗?
#
19251次浏览
275人参与
#
工作丧失热情的瞬间
#
66673次浏览
798人参与
牛客网
牛客企业服务