LeetCode算法题-Add Strings(Java实现)
这是悦乐书的第223次更新,第236篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第90题(顺位题号是415)。给定两个非负整数num1和num2表示为字符串,返回num1和num2的总和。
注意:
- num1和num2的长度均<5100。
- num1和num2都只包含数字0-9。
- num1和num2都不包含任何前导零。
- 您不能使用任何内置BigInteger库或直接将输入转换为整数。
本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。
02 第一种解法
从后向前依次获取两个字符串的字符,转成int类型,然后做加法得到和,利用对10取余将余数添加进字符串的第一位,然后需要计算进位,直接将和除以10,就是可能存在的进位。
在循环的判断条件中,还需要判断进位是否等于1,因为有可能最高位会存在进位,不然会存在误差。
两个字符串的长度不能保证相等,所以索引从后往前递减时,两索引大于等于0是或的关系。
在通过索引取对应位置的字符时,也要判断是否大于等于0,不满足就取默认值0。
public String addStrings(String num1, String num2) {
int len = num1.length()-1;
int len2 = num2.length()-1;
int count = 0;
StringBuilder sb = new StringBuilder();
for (int i=len, j=len2; i>=0 || j>=0 || count == 1; i--,j--) {
int n = i >= 0 ? num1.charAt(i)-'0' : 0;
int n2 = j >= 0 ? num2.charAt(j)-'0' : 0;
int sum = n + n2 + count;
sb.insert(0, sum%10);
count = sum/10;
}
return sb.toString();
}
03 第二种解法
和第一种解法的思路一样,只是将for循环换成了while循环,没有始终在第一位插入,而是最后通过反转完成。
public String addStrings2(String num1, String num2) {
int i = num1.length()-1;
int j = num2.length()-1;
int carry = 0;
StringBuilder sb = new StringBuilder();
while (i>=0 || j>=0 || carry == 1) {
int n = i >= 0 ? num1.charAt(i)-'0' : 0;
int n2 = j >= 0 ? num2.charAt(j)-'0' : 0;
int sum = n + n2 + carry;
sb.append(sum%10);
carry = sum/10;
i--;
j--;
}
return sb.reverse().toString();
}
04 小结
算法专题目前已连续日更超过两个月,算法题文章90+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。
以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!
LeetCode算法题-Add Strings(Java实现)的更多相关文章
- LeetCode算法题-Isomorphic Strings(Java实现)
这是悦乐书的第191次更新,第194篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第50题(顺位题号是205).给定两个字符串s和t,确定它们是否是同构的.如果s中的字符 ...
- LeetCode算法题-Add Digits(Java实现-3种解法)
这是悦乐书的第199次更新,第207篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第63题(顺位题号是258).给定非负整数num,重复添加其所有数字,直到结果只有一位数 ...
- LeetCode算法题-Add Binary(Java实现)
这是悦乐书的第157次更新,第159篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第16题(顺位题号是67).给定两个二进制字符串,返回它们的总和(也是二进制字符串).输 ...
- LeetCode算法题-Heaters(Java实现)
这是悦乐书的第239次更新,第252篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第106题(顺位题号是475).冬天来了!您在比赛期间的第一份工作是设计一个固定温暖半径 ...
- LeetCode算法题-Sqrt(Java实现)
这是悦乐书的第158次更新,第160篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第17题(顺位题号是69). 计算并返回x的平方根,其中x保证为非负整数. 由于返回类型 ...
- LeetCode算法题-Subdomain Visit Count(Java实现)
这是悦乐书的第320次更新,第341篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第189题(顺位题号是811).像"discuss.leetcode.com& ...
- LeetCode算法题-Unique Morse Code Words(Java实现)
这是悦乐书的第318次更新,第339篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第186题(顺位题号是804).国际莫尔斯电码定义了一种标准编码,其中每个字母映射到一系 ...
- LeetCode算法题-Letter Case Permutation(Java实现)
这是悦乐书的第315次更新,第336篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第184题(顺位题号是784).给定一个字符串S,将每个字母单独转换为小写或大写以创建另 ...
- LeetCode算法题-Minimum Distance Between BST Nodes(Java实现-四种解法)
这是悦乐书的第314次更新,第335篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第183题(顺位题号是783).给定具有根节点值的二叉搜索树(BST),返回树中任何两个 ...
随机推荐
- [转]git图解(3):分支操作
本文转自:https://www.jianshu.com/p/342a9f8db004 title_img.png git 的分支是它最明显的特性, 大部分人听别人推荐使用git都会听到“git分 ...
- c# 解密微信encryptedData字段
参考链接:https://www.cnblogs.com/jetz/p/6384809.html 我写了一个工具方法,直接照搬链接中的方法,还有一个工具类. public class Encrypt ...
- Spring,SpringMvc配置常见的坑,注解的使用注意事项,applicationContext.xml和spring.mvc.xml配置注意事项,spring中的事务失效,事务不回滚原因
1.Spring中的applicationContext.xml配置错误导致的异常 异常信息: org.apache.ibatis.binding.BindingException: Invalid ...
- nginx配置反向代理和负载均衡
一.反向代理 说明:应该有一个nginx服务器有多个应用服务器(可以是tomcat),本文使用一台虚拟机,安装一个nginx,多个tomcat,来模拟 upstream tomcats{ server ...
- List集合遍历整理
遍历List集合的三种方式 0. 首先准备测试数据 List<String> list = new ArrayList<String>(); list.add("Ja ...
- 面试官:"谈谈分库分表吧?"
原文链接:面试官:"谈谈分库分表吧?" 面试官:“有并发的经验没?” 应聘者:“有一点.” 面试官:“那你们为了处理并发,做了哪些优化?” 应聘者:“前后端分离啊,限流啊 ...
- nodeJs express mongodb 建站(window 10 版)
一.环境搭建 安装 node.git.npm.express.mongodb.主要介绍express.mongodb 的安装. (1)node安装:https://nodejs.org/en/down ...
- cf55D. Beautiful numbers(数位dp)
题意 题目链接 Sol 看到这种题就不难想到是数位dp了. 一个很显然的性质是一个数若能整除所有位数上的数,则一定能整除他们的lcm. 根据这个条件我们不难看出我们只需要记录每个数对所有数的lcm(也 ...
- CentOS-7.2安装Ambari-2.6.1
CentOS-7.2安装Ambari-2.6.1 一.Ambari 是什么? Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目, ...
- SqlMapConfig配置加注解
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC & ...