【问题描述】[简单]

【解答思路】

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/

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

  1. [Leetcode]第[43]题[JAVA][字符串相乘][字符串相加]

    [问题描述][中等] [解答思路] 1. 普通竖式 **复杂度:O(N^2) ** class Solution {/*** 计算形式* num1* x num2* ------* result*/p ...

  2. [Leetcode][第5458题][JAVA][字符串的好分割数目][双指针][HashSet]

    [问题描述]5458. 字符串的好分割数目[中等] [解答思路] 1. 双指针 前面的搜索前面的个数和,后面的搜索后面的个数和 时间复杂度:O(N^2) 空间复杂度:O(1) class Soluti ...

  3. [Leetcode][第17题][JAVA][电话号码的字母组合][回溯]

    [问题描述][中等] [解答思路] 用哈希表/数组存储每个数字对应的所有可能的字母,然后进行回溯操作. 回溯过程中维护一个字符串,表示已有的字母排列(如果未遍历完电话号码的所有数字,则已有的字母排列是 ...

  4. [Leetcode][第889题][JAVA][根据前序和后序遍历构造二叉树][分治][递归]

    [问题描述][中等] [解答思路] copyOfRange class Solution {public TreeNode constructFromPrePost(int[] pre, int[] ...

  5. [Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]

    [问题描述][中等] [解答思路] public class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) { ...

  6. [Leetcode][第78题][JAVA][子集][位运算][回溯]

    [问题描述][中等] [解答思路] 1. 位运算 复杂度 class Solution {List<Integer> t = new ArrayList<Integer>(); ...

  7. [Leetcode][第79题][JAVA][单词搜索][DFS][回溯]

    [问题描述][中等] [解答思路] 1. DFS繁琐版本 class Solution {public boolean exist(char[][] board, String word) {bool ...

  8. [Leetcode][第40题][JAVA][数组总和2][回溯][剪枝]

    [问题描述][中等] [解答思路] 1. 减法 import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Ar ...

  9. [Leetcode][第216题][JAVA][数组之和3][回溯]

    [问题描述][中等] [解答思路] 回溯 剪树枝 当和超过n 或 个数超过k 1. 正向求和 优化前 class Solution {public List<List<Integer> ...

最新文章

  1. JavaScript学习总结(十六)——Javascript闭包(Closure)
  2. Android SearchView介绍及搜索提示实现
  3. 求单独出现的数,冒泡排序优化,strncpy的优化
  4. python中strip()的陷阱
  5. PHP 笔记——操作MySQL数据库
  6. vue的递归组件以及三级菜单的制作
  7. Alibaba Druid连接池接入
  8. TP-LINK路由器连接网线上网教程(租房必备)
  9. Oculus关于Internal Error:OVR53225466报错解决方法
  10. SpringBoot注解@Value取值取不到问题
  11. java中的回调函数
  12. Weblogic的下载、安装、使用
  13. 为Linux安装虚拟PDF打印机
  14. 樱花何处有?动态樱花飘落图
  15. 笔记本显示器驱动更新
  16. 关于echarts人物关系图,节点展现为图片
  17. 手段-目的理论定性研究实践经验分享
  18. 如何用java取对数_使用Java中的Math.log获取自然对数值
  19. Slack 开发入门之 Incoming Webhooks:往 Slack 的 Channel 中发消息
  20. [Oracle 11g r2(11.2.0.4.0)]集群守护进程CSS资源管理

热门文章

  1. web窗体的内置对象
  2. 单片机的 FIFO循环队列实现
  3. Replication--查看未分发命令和预估所需时间
  4. 使用 Eclipse C/C++ Development Toolkit 开发应用程序
  5. easyui启用行号错位解决方案
  6. MacOS中Elasticsearch的安装「借助Homebrew」
  7. mysql数据库with ur_Python使用MySQL数据库(新)
  8. 下拉列表项过多会导致浏览器卡死
  9. mysql key value 引擎_mysql集成的key-value引擎-个人翻译
  10. linux中的文件,文件夹,链接的权限划分