[Leetcode][第415题][JAVA][字符串相加][双指针]
生活随笔
收集整理的這篇文章主要介紹了
[Leetcode][第415题][JAVA][字符串相加][双指针]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【問題描述】[簡單]
【解答思路】
1. 雙指針
- 從兩個字符串最后開始處理 對齊字符串
- 添加當前位 int c = a+b+cnt; cnt為進位
- 超過長度的補“0” 要注意最后有可能需要處理溢出位
時間復雜度:O(max(M,N)) 空間復雜度:O(1)
** 優化**
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][字符串相加][双指针]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于什么时候用pop什么时候用dismi
- 下一篇: C#做的一个加密/解密的类