博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode算法题-Add Strings(Java实现)
阅读量:7152 次
发布时间:2019-06-29

本文共 1659 字,大约阅读时间需要 5 分钟。

这是悦乐书的第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+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

转载于:https://www.cnblogs.com/xiaochuan94/p/10231323.html

你可能感兴趣的文章
Unity 实现物体破碎效果(转)
查看>>
ASIHTTPRequestErrorDomain Code=5
查看>>
2011年排名前七位的Linux操作系统。
查看>>
SECURITY_ATTRIBUTES 设置低权限
查看>>
php中array_merge合并数组详解
查看>>
阅读jquery源码与js依赖加载的模块化!
查看>>
boost::thread用法
查看>>
计算机原理 发展简史
查看>>
分形之二叉树(Binary Tree)
查看>>
程序员的进步从阅读自己的老代码开始
查看>>
How to make a combo box with fulltext search autocomplete support?
查看>>
大数据的三个入口
查看>>
算法生成卐和卍字图
查看>>
java模拟异步消息的发送与回调
查看>>
void指针
查看>>
Oracle用户、权限、角色管理
查看>>
AutoMapper使用手册(一)
查看>>
基本类型赋值转换规则表
查看>>
hackerrank-knapsack
查看>>
SessionFactory的创建和Session的获得
查看>>