leetcode-415-easy
Add String
思路一: 模拟加法运算,字符串前面填零
public String addStrings(String num1, String num2) {
int max = Math.max(num1.length(), num2.length());
num1 = pad(num1, max);
num2 = pad(num2, max);
int p = 0;
StringBuilder result = new StringBuilder();
for (int length = num1.length() - 1; length >= 0; length--) {
int sum = Integer.parseInt(Character.toString(num1.charAt(length))) +
Integer.parseInt(Character.toString(num2.charAt(length))) + p;
if (sum >= 10) {
p = 1;
result.insert(0, sum % 10);
} else {
p = 0;
result.insert(0, sum);
}
}
if (p == 1) {
result.insert(0, '1');
}
return result.toString();
}
public static String pad(String str, int len) {
if (str.length() >= len) return str;
StringBuilder strBuilder = new StringBuilder(str);
for (int i = 0; i < (len - str.length()); i++) {
strBuilder.insert(0, '0');
}
return strBuilder.toString();
}
思路二: 做法和思路一一样,细节优化:双指针,指针指向字符串尾部,另外 ‘1’-'0' 可以直接算 char 类型 ‘1’ 对应的 int 值
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();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)