【LeetCode笔记】415. 字符串相加(Java、字符串)
题目描述
- 不能直接把字符串转换成整数(会溢出)
- 面试被问过,今天刷面经又刷到。。那就索性水一篇文吧!
- 更新:原题就是 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、字符串)相关推荐
- java字符串相加_String字符串相加的原理
**因为String是非常常用的类, jvm对其进行了优化, jdk7之前jvm维护了很多的字符串常量在方法去的常量池中, jdk后常量池迁移到了堆中 ** 方法区是一个运行时JVM管理的内存区域,是 ...
- java字符串长度(java字符串长度压缩)
Java字符串按字节数截取长度是什么? * 解释: * 此处的编码方式应该是操作系统默认的GB编码,即汉字占2个字节且第一个字节的最高位是1, * 如果理解为有符号数的话,就是负数:而英文占1个字节, ...
- android 日期 转换成字符串,android JAVA字符串转日期或日期转字符串(转)
用法: SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " ); 这一行最重要,它确立了转换的 ...
- json对象,java对象,json字符串,java字符串转换方式,没写的自己去看源码!
package com.sgai.property;import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjs ...
- java字符串替换(JAVA字符串替换 里面有美元符号)
java 如何把字符串里的\替换成\\ String str="abc\\def"; System.out.println(str);//输出abc\def System.out. ...
- java字符串反转(java字符串反转义)
java中如何将字符串反转? package string; public class StringTest3 { public static void main(String[] args) Str ...
- 字符串相加 java_字符串相加-LeetCode(Java实现)
题目描述: 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num1 和nu ...
- java 过滤字符串_java实现压缩字符串和java字符串过滤
题目一:通过键盘输入一串小写字母(a~z)组成的字符串. 请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉. 比如字符串"abacacde"过滤结果 ...
- java 字符串函数_Java字符串函数– 25+必须知道方法
java 字符串函数 Java字符串函数 (Java String Functions) Java String class has a lot of functions to manipulate ...
- java 字符串面试_Java字符串面试问答
java 字符串面试 String is one of the most widely used Java Class. Here I am listing some important Java S ...
最新文章
- java pdf 中文_java-pdf-itext 生成pdf 文档(支持中文字体)
- 【AI实战】快速掌握TensorFlow(二):计算图、会话
- 第二章 GuassDB 数据库基础知识
- html页面刷新回到顶部_HTMl页面中返回顶部的几种实现小结
- 实验四 查找和排序算法实现
- 自然语言系列学习之表示学习与知识获取(七)利用关系路径进行关系抽取
- c语言单链表数据显示,C++_C语言单链表常见操作汇总,C语言的单链表是常用的数据结 - phpStudy...
- 中标麒麟/NeoKylin 安装QT开发环境
- Win03+IIS6 部署.NetFramework4(ASP.NET4)的一点小经验
- vc++6.0中创建工程时选Win32 Application和Win32 console Application的区别
- POJ2155 Matrix二维线段树经典题
- Android物联网应用程序开发(智慧城市)—— 购物信息的存储界面开发
- Idea 离线安装插件 Idea 安装离线插件
- ppt如何利用视频作为背景
- oracle wire protocol,WMB 8.0.0.2 在linux下面怎么配置连接ORACLE数据库
- 通过电话拨号上网的家用计算机,拨号上网需计算机、电话线、帐号和()
- IntelliJ IDEA 插件库设置
- 关于第四次财富狂潮的思考,区块链如猛虎出笼?
- SpringBoot -> 自动装配初探,debug=ture判断配置类是否生效
- 汽车喷漆车间风淋室八大参数TENAISU
热门文章
- oracle11g session,Oracle11g中Killsession心得
- java官方 jax rs_jboss7 Java API for RESTful Web Services (JAX-RS) 官方文档
- dbref java_查询mongodb dbref内部字段
- 快速转 TypeScript 指南
- 安卓模拟器 Genymotion 安装
- teamviewer企业版 添加计算机,teamviewer添加常用控制电脑列表的操作步骤
- 1115 Counting Nodes in a BST(甲级)
- promise的状态值_什么是Promise,Promise的三种状态
- 滤波器开发之一:基于算数平均的平滑滤波器
- C语言学习及应用笔记之五:C语言typedef关键字及其使用