[Leetcode][第415题][JAVA][字符串相加][双指针]

【问题描述】[简单]

在这里插入图片描述

【解答思路】

1. 双指针

在这里插入图片描述

  • 从两个字符串最后开始处理 对齐字符串
  • 添加当前位 int c = a+b+cnt; cnt为进位
  • 超过长度的补“0” 要注意最后有可能需要处理溢出位
    时间复杂度:O(max(M,N)) 空间复杂度:O(1)
 public String addStrings(String num1, String num2) {int n1 = num1.length()-1;int n2 = num2.length()-1;int cnt = 0;StringBuilder res = new StringBuilder("");while(n1>=0 || n2>=0){int a = 0 ,b = 0;if(n1<0){a= 0 ;}else{a = num1.charAt(n1)-'0';}if(n2<0){b= 0 ;}else{b = num2.charAt(n2)-'0';}int c = a+b+cnt;cnt = c/10;c%=10;res.append(c);n1--;n2--;}if(cnt ==1){res.append(1);}return res.reverse().toString();}

** 优化**

class Solution {public String addStrings(String num1, String num2) {StringBuilder res = new StringBuilder("");int i = num1.length() - 1, j = num2.length() - 1, carry = 0;while(i >= 0 || j >= 0){int n1 = i >= 0 ? num1.charAt(i) - '0' : 0;int n2 = j >= 0 ? num2.charAt(j) - '0' : 0;int tmp = n1 + n2 + carry;carry = tmp / 10;res.append(tmp % 10);i--; j--;}if(carry == 1) res.append(1);return res.reverse().toString();}
}

【总结】

1. 双指针 不用函数的要注意处理溢出位 补“0”
2.一开始用了List 转字符串不好转 应该采用StringBulider
3.StringBulider用法总结

1、append(String str)/append(Char c):字符串连接
2、toString():返回一个与构建起或缓冲器内容相同的字符串
3、setCharAt(int i, char c):将第 i 个代码单元设置为 c(可以理解为替换)
4、insert(int offset, String str)/insert(int offset, Char c):在指定位置之前插入字符(串)
5、delete(int startIndex,int endIndex):删除起始位置(含)到结尾位置(不含)之间的字符串
转载链接:https://leetcode-cn.com/problems/add-strings/solution/add-strings-shuang-zhi-zhen-fa-by-jyd/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

401 binary watch

文章题目来源于leetcode&#xff0c;解法学习了讨论去的解法。  问题&#xff1a;有一种二进制LED表。上面的4个LED灯表示小时&#xff0c;下面6个LED灯表示分钟。给定一个int值&#xff0c;写出可能表示的时间。例如输入1&#xff0c; Input: n 1 Return: [“1:00”, “2…

7立项申请

项目诞生的驱动因素 系统服务请求书 识别需求提出项目建议书 项目建议书内容 项目的可行性研究 如何进行项目的可行性研究 市场可行性研究 市场可行性分析注意事项 捕捉用户需求是一件困难的事 三个苹果改变世界 经济可行性 收益与成本 投入产出分析 投资分析期 纯收入 技术可行…

【数据结构与算法】数组与链表

数组的定义和特性 数组&#xff08;Array&#xff09;是一种线性表数据结构。它用一组连续的内存空间&#xff0c;来存储一组具有相同类型的数据。 线性表&#xff08;Linear List&#xff09;&#xff1a;数组、链表、队列、栈 非线性表&#xff1a;树 图 连续的内存空间和相…

8构建项目组

组建项目组 组建项目组的任务 项目组架构 项目赞助人职责 项目经理的标签 项目经理的责任 项目成员的职责 案例分析 西天取经的只能架构 西天取经项目组 一个良好团队的七个要素

MySQL数据库面试题

目录数据库基础知识为什么要使用数据库什么是SQL&#xff1f;什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式&#xff1f;分别有什么区别&#xff1f;数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引…

log双线性模型log-bilinear model简单概括

LBLM(log-bilinear model)是自然语言处理中的比较简单的模型。LBLM根据上下文的词向量来预测下一个词向量wnw_nwn​&#xff0c;通过对上下文词向量的一个线性组合来表示&#xff1a; rwr_wrw​是一个实数值词向量对于词www对于下一个词的分布计算根据wnw_nwn​预测表示和所有…

9制定项目章程

项目干系人概述 项目主要干系人 项目章程 项目章程的功能 项目章程

【数据结构与算法】栈与队列

栈 一、什么是栈&#xff1f; 1.后进者先出&#xff0c;先进者后出&#xff0c;这就是典型的“栈”结构。 2.从栈的操作特性来看&#xff0c;是一种“操作受限”的线性表&#xff0c;只允许在端插入和删除数据。 二、为什么需要栈&#xff1f; 1.栈是一种操作受限的数据结构…

线性代数的本质笔记-更新ing

1. 序言 线性代数不光要会计算&#xff0c;还要理解掌握其几何直观。 2. 向量究竟是什么&#xff1f; 物理学&#xff1a;向量是空间中的箭头&#xff0c;具有长度和方向两个属性。计算机&#xff1a;向量是一个有序数表。比如房屋的参数信息可以根据相关属性按准许列成一个…

10项目开工会

立项启动准备 启动会的任务 如何进行项目启动

[Leetcode][第337题][JAVA][打家劫舍3][递归][动态规划]

【问题描述】[中等] 【解答思路】 1. 动态规划 第 1 步&#xff1a;状态定义 dp[node][j] &#xff1a;这里 node 表示一个结点&#xff0c;以 node 为根结点的树&#xff0c;并且规定了 node 是否偷取能够获得的最大价值。 j 0 表示 node 结点不偷取&#xff1b; j 1 表示…

二元随机变量函数的分布

在前面的文章记录了二元随机变量的定义、离散型二元随机变量的联合分布律/联合概率密度函数、边际分布律/边际概率密度函数、条件分布律/条件概率密度 &#xff0c;以及对应的 联合分布函数、边际分布函数、条件分布函数。这篇文档介绍二元随机变量函数的分布。 二元随机变量函…

第四十期:2019年度十大Web开发趋势

本文和您一起讨论那些本年度改变软件开发行业、特别是Web开发方面的十大趋势。 如今&#xff0c;随着各种新趋势的层出不穷&#xff0c;Web和移动领域的创新不仅改变了人们、乃至整个社会的日常行为习惯、以及业务处理方式&#xff0c;而且也使得开发人员能够轻松、且高效地创建…

【数据结构与算法】排序 冒泡、插入、选择 O(n^2)

冒泡、插入、选择 O(n2) 基于比较 快排、归并 O(nlogn) 基于比较 计数、基数、桶 O(n) 不基于比较 一、如何分析一个排序算法&#xff1f; 学习排序算法的思路&#xff1f;明确原理、掌握实现以及分析性能。如何分析排序算法性能&#xff1f;从执行效率、内存消耗以及稳定性…

[Leetcode][第336题][JAVA][回文对][暴力][HashSet][字典树]

【问题描述】[困难] 【解答思路】 1. 暴力&#xff08;超时&#xff09; 时间复杂度&#xff1a;O(n 2 m)&#xff0c;其中 n 是字符串的数量&#xff0c;m 是字符串的平均长度 空间复杂度&#xff1a;O(1) class Solution {public List<List<Integer>> palindr…

第十二期:面试官问你什么是消息队列?把这篇甩给他!

消息队列不知道大家看到这个词的时候&#xff0c;会不会觉得它是一个比较高端的技术&#xff0c;反正我是觉得它好像是挺牛逼的。 一、什么是消息队列&#xff1f; 消息队列不知道大家看到这个词的时候&#xff0c;会不会觉得它是一个比较高端的技术&#xff0c;反正我是觉得它…

第三章 随机变量的数字特征

数学期望 数学期望用来反映平均情况。 定义 设离散型随机变量X的分布律为P(Xxk)pk,k1,2,3...&#xff0c;若级数∑∞k1xkpk是收敛的&#xff0c;则称级数∑∞k1xkpk的值为随机变量X的数学期望。记为E(X)。E(X)∑k1∞xkpkpk可以理解为加权平均中的权值。数学期望又称为 均值。 …

python二进制、字符编码及文件操作

1. 二进制 bin()十进制转二进制 0b oct&#xff08;&#xff09;十进制转八进制 0o hex&#xff08;&#xff09;十进制转十六进制 0x&#xff0c;4个二进制对应1个16进制&#xff0c;用于网络编程&#xff0c;数据存储 print(int(110111,2)) 55 print(int(ffff,16)) 65535 p…