题目描述

  • 不能直接把字符串转换成整数(会溢出)
  • 面试被问过,今天刷面经又刷到。。那就索性水一篇文吧!
  • 更新:原题就是 leetcode 415

思路 & 代码

  • 只要理好字符串s、字符串t、答案字符串的对应位关系就好啦!
  • 注意 carry 位的考虑:其中一个字符串已经结束时,也还需要考虑。
    加法结束后,还要考虑最后一次
  • 注意进行字符之间的加法的时候不要算乱了= =
  • 时间复杂度 O(max(m, n)),取两字符串的最大长度
import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可* 计算两个数之和* @param s string字符串 表示第一个整数* @param t string字符串 表示第二个整数* @return string字符串*/public String solve (String s, String t) {int sL = s.length();int tL = t.length();int maxL = Math.max(sL, tL);// 从后往前,从小到大char[] ans = new char[maxL];int carry = 0;// 时间复杂度 O(max(m, n))for(int i = sL - 1, j = tL - 1; maxL > 0; i--, j--, maxL--){int nowSum = 0;// 一方先结束的情况if(i < 0){nowSum = t.charAt(j) - '0' + carry;}// 同上else if(j < 0){nowSum = s.charAt(i) - '0' + carry;}// 都没结束的情况(注意,这三种情况都要考虑 carry 位)else{nowSum = s.charAt(i) + t.charAt(j) - '0' - '0' + carry;}// 进位处理carry = nowSum / 10;nowSum %= 10;ans[maxL - 1] = (char)(nowSum + '0');}String ansS = new String(ans);// 最后一次进位处理if(carry == 1){ansS = '1' + ansS;}return ansS;// write code here}
}

更新版

  • 刷到评论区大佬的做法,很nice
  • while 循环写得很巧妙。
class Solution {public String addStrings(String num1, String num2) {StringBuilder sb = new StringBuilder();int carry = 0;int i = num1.length() - 1, j = num2.length() - 1;while(i >= 0 || j >= 0 || carry != 0) {if(i >= 0) {carry += num1.charAt(i--) - '0';}if(j >= 0) {carry += num2.charAt(j--) - '0';}sb.append(carry % 10);carry /= 10;}return sb.reverse().toString();}
}

【LeetCode笔记】415. 字符串相加(Java、字符串)相关推荐

  1. java字符串相加_String字符串相加的原理

    **因为String是非常常用的类, jvm对其进行了优化, jdk7之前jvm维护了很多的字符串常量在方法去的常量池中, jdk后常量池迁移到了堆中 ** 方法区是一个运行时JVM管理的内存区域,是 ...

  2. java字符串长度(java字符串长度压缩)

    Java字符串按字节数截取长度是什么? * 解释: * 此处的编码方式应该是操作系统默认的GB编码,即汉字占2个字节且第一个字节的最高位是1, * 如果理解为有符号数的话,就是负数:而英文占1个字节, ...

  3. android 日期 转换成字符串,android JAVA字符串转日期或日期转字符串(转)

    用法: SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " ); 这一行最重要,它确立了转换的 ...

  4. json对象,java对象,json字符串,java字符串转换方式,没写的自己去看源码!

    package com.sgai.property;import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjs ...

  5. java字符串替换(JAVA字符串替换 里面有美元符号)

    java 如何把字符串里的\替换成\\ String str="abc\\def"; System.out.println(str);//输出abc\def System.out. ...

  6. java字符串反转(java字符串反转义)

    java中如何将字符串反转? package string; public class StringTest3 { public static void main(String[] args) Str ...

  7. 字符串相加 java_字符串相加-LeetCode(Java实现)

    题目描述: 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num1 和nu ...

  8. java 过滤字符串_java实现压缩字符串和java字符串过滤

    题目一:通过键盘输入一串小写字母(a~z)组成的字符串. 请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉. 比如字符串"abacacde"过滤结果 ...

  9. java 字符串函数_Java字符串函数– 25+必须知道方法

    java 字符串函数 Java字符串函数 (Java String Functions) Java String class has a lot of functions to manipulate ...

  10. java 字符串面试_Java字符串面试问答

    java 字符串面试 String is one of the most widely used Java Class. Here I am listing some important Java S ...

最新文章

  1. java pdf 中文_java-pdf-itext 生成pdf 文档(支持中文字体)
  2. 【AI实战】快速掌握TensorFlow(二):计算图、会话
  3. 第二章 GuassDB 数据库基础知识
  4. html页面刷新回到顶部_HTMl页面中返回顶部的几种实现小结
  5. 实验四 查找和排序算法实现
  6. 自然语言系列学习之表示学习与知识获取(七)利用关系路径进行关系抽取
  7. c语言单链表数据显示,C++_C语言单链表常见操作汇总,C语言的单链表是常用的数据结 - phpStudy...
  8. 中标麒麟/NeoKylin 安装QT开发环境
  9. Win03+IIS6 部署.NetFramework4(ASP.NET4)的一点小经验
  10. vc++6.0中创建工程时选Win32 Application和Win32 console Application的区别
  11. POJ2155 Matrix二维线段树经典题
  12. Android物联网应用程序开发(智慧城市)—— 购物信息的存储界面开发
  13. Idea 离线安装插件 Idea 安装离线插件
  14. ppt如何利用视频作为背景
  15. oracle wire protocol,WMB 8.0.0.2 在linux下面怎么配置连接ORACLE数据库
  16. 通过电话拨号上网的家用计算机,拨号上网需计算机、电话线、帐号和()
  17. IntelliJ IDEA 插件库设置
  18. 关于第四次财富狂潮的思考,区块链如猛虎出笼?
  19. SpringBoot -> 自动装配初探,debug=ture判断配置类是否生效
  20. 汽车喷漆车间风淋室八大参数TENAISU

热门文章

  1. oracle11g session,Oracle11g中Killsession心得
  2. java官方 jax rs_jboss7 Java API for RESTful Web Services (JAX-RS) 官方文档
  3. dbref java_查询mongodb dbref内部字段
  4. 快速转 TypeScript 指南
  5. 安卓模拟器 Genymotion 安装
  6. teamviewer企业版 添加计算机,teamviewer添加常用控制电脑列表的操作步骤
  7. 1115 Counting Nodes in a BST(甲级)
  8. promise的状态值_什么是Promise,Promise的三种状态
  9. 滤波器开发之一:基于算数平均的平滑滤波器
  10. C语言学习及应用笔记之五:C语言typedef关键字及其使用