您的位置:首页 > 健康 > 美食 > 百度官方网站首页_大数据免费查询平台_网络营销试题库及答案_直播:韩国vs加纳直播

百度官方网站首页_大数据免费查询平台_网络营销试题库及答案_直播:韩国vs加纳直播

2025/4/4 3:00:12 来源:https://blog.csdn.net/2301_80329517/article/details/146963768  浏览:    关键词:百度官方网站首页_大数据免费查询平台_网络营销试题库及答案_直播:韩国vs加纳直播
百度官方网站首页_大数据免费查询平台_网络营销试题库及答案_直播:韩国vs加纳直播

一、字符串相加

class Solution {/*** 该方法用于将两个以字符串形式表示的非负整数相加,并返回相加结果的字符串形式* @param num1 第一个以字符串形式表示的非负整数* @param num2 第二个以字符串形式表示的非负整数* @return 两个数相加结果的字符串形式*/public String addStrings(String num1, String num2) {// 创建一个 StringBuilder 对象,用于存储相加的结果StringBuilder res = new StringBuilder("");// i 指向 num1 的最后一个字符,j 指向 num2 的最后一个字符int i = num1.length() - 1, j = num2.length() - 1;// carry 用于存储进位,初始化为 0int carry = 0;// 从两个字符串的末尾开始逐位相加,只要还有未处理的位就继续循环while(i >= 0 || j >= 0){// 如果 i 有效(即 i 不小于 0),将 num1 对应位置的字符转换为数字,否则为 0int n1 = i >= 0 ? num1.charAt(i) - '0' : 0;// 如果 j 有效(即 j 不小于 0),将 num2 对应位置的字符转换为数字,否则为 0int n2 = j >= 0 ? num2.charAt(j) - '0' : 0;// 计算当前位相加的结果,包括进位int tmp = n1 + n2 + carry;// 更新进位,carry 为 tmp 除以 10 的商carry = tmp / 10;// 将当前位相加结果的个位数添加到 res 中res.append(tmp % 10);// 移动到前一位i--;j--;}// 如果最后还有进位,将进位 1 添加到结果中if(carry == 1) res.append(1);// 由于结果是从低位到高位添加的,需要反转字符串得到正确的顺序return res.reverse().toString();}public static void main(String[] args) {Solution solution = new Solution();String num1 = "123";String num2 = "456";// 调用 addStrings 方法计算两个字符串表示的数字之和String result = solution.addStrings(num1, num2);System.out.println(result);}
}    

二、字符串相乘 

class Solution {/*** 此方法用于计算两个以字符串形式表示的非负整数的乘积,并将结果以字符串形式返回* @param num1 第一个非负整数的字符串表示* @param num2 第二个非负整数的字符串表示* @return 两个数乘积的字符串表示*/public String multiply(String num1, String num2) {// 若其中一个数为 0,则直接返回 0if (num1.equals("0") || num2.equals("0")) {return "0";}// 获取 num1 的长度int m = num1.length();// 获取 num2 的长度int n = num2.length();// 两个数相乘结果的最大长度为 m + n,所以创建一个长度为 m + n 的数组来存储中间结果int[] result = new int[m + n];// 从 num1 的最后一位开始遍历for (int i = m - 1; i >= 0; i--) {// 从 num2 的最后一位开始遍历for (int j = n - 1; j >= 0; j--) {// 将当前位的字符转换为数字并相乘int mul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');// 计算乘积结果在 result 数组中的位置int p1 = i + j;int p2 = i + j + 1;// 加上之前可能存在的进位int sum = mul + result[p2];// 存储当前位的结果result[p2] = sum % 10;// 处理进位result[p1] += sum / 10;}}// 用于构建最终结果的字符串StringBuilder sb = new StringBuilder();// 遍历结果数组for (int num : result) {// 跳过前导零if (!(sb.length() == 0 && num == 0)) {sb.append(num);}}// 返回最终结果的字符串表示return sb.toString();}
}    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com