43. 字符串相乘
43. 字符串相乘
package 字符串; public class 字符串相乘 { public static void main(String[] args) { String num1 = "123"; String num2 = "456"; 字符串相乘 o = new 字符串相乘(); System.out.println(o.addString(num1, num2)); System.out.println(o.multiply(num1, num2)); } // 利用乘法竖式的思想,先用num2的个位和num1相乘,先用num2的十位和num1相乘 // 最后补零相加 public String multiply(String num1, String num2) { if (num1.equals("0") || num2.equals("0")) { return "0"; } String s = null; String result = null; for (int i = num2.length() - 1; i >= 0; i--) { int k = num2.charAt(i) - '0'; StringBuilder sb = new StringBuilder(); int carray = 0; // 补0 for (int j = 0; j < num2.length() - 1 - i; j++) { sb.append(0); } for (int j = num1.length() - 1; j >= 0; j--) { int q = num1.charAt(j) - '0'; int mul = k * q + carray; carray = mul / 10; mul = mul % 10; sb.append(mul); } if (carray != 0) { sb.append(carray); } s = sb.reverse().toString(); result = addString(result, s); } return result; } // 两个字符串相加 // "123" // "4567" public String addString(String result, String s) { if (result == null) { return s; } if (s == null) { return result; } StringBuilder sb = new StringBuilder(); int i = result.length() - 1; int j = s.length() - 1; int carray = 0; while (i >= 0 || j >= 0 || carray != 0) { int m = i >= 0 ? result.charAt(i) - '0' : 0; int n = j >= 0 ? s.charAt(j) - '0' : 0; int sum = (m + n + carray) % 10; carray = (m + n + carray) / 10; sb.append(sum); i--; j--; } return sb.reverse().toString(); } }
。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2019-12-02 ZAB协议-Zookeeper一致性协议
2019-12-02 Zookeeper数据类型、节点类型、角色、watcher监听机制