html5 手机端网站,做优惠卷网站,南宁搜索引擎优化,wordpress页面设置全屏一、题目 二、思路解析 1.思路#xff1a; 1.双重for循环#xff0c;倒序依次相乘 2.在倒序处理进位问题 3.最后返回参数的类型是string#xff0c;用StringBuilder拼接#xff0c;再转换为字符串 2.常用方法#xff1a; 1.equals,比较对象内容是否一致
0.eq…一、题目 二、思路解析 1.思路 1.双重for循环倒序依次相乘 2.在倒序处理进位问题 3.最后返回参数的类型是string用StringBuilder拼接再转换为字符串 2.常用方法 1.equals,比较对象内容是否一致
0.equals(num1); 2.append(),拼接字符
sb.append(res[index]); 3.toString(),转字符串
sb.toString(); 3.核心逻辑 1.处理特殊情况当两个字符串有其中一个为0即返回结果值为“0”
if(0.equals(num1)||0.equals(num2)) return 0; 2.定义一个整型数组res来存储每一个位数于位数的乘积值无需关注是否进位问题
int[]resnew int[num1.length()num2.length()];for(int inum1.length()-1;i0;i--){int temp1num1.charAt(i)-0;for(int jnum2.length()-1;j0;j--){int temp2num2.charAt(j)-0;res[ij1]temp1temp2;
}
} 3. 处理进位问题
for(int ires.length-1;i0;i--){res[i-1]res/10;res[i]res[i]%10;
} 4.拼接字符串 √.注意事项两数相乘最后的结果位数范围是不超过两数位数相加同时也不会小于 两数位数相加-1;故需要判断首字符是否为0才好决定从哪一位开始拼接
int indexres[0]0?1:0;StringBuilder sbnew StringBuilder();for(int iindex;ires.length;i){sb.append(res[i]);}return sb.toString();
三、代码实现
class Solution {public String multiply(String num1, String num2) {if(0.equals(num1)||0.equals(num2)){return 0;}int size1num1.length();int size2num2.length();int[]resnew int[size1size2];for(int isize1-1;i0;i--){int t1num1.charAt(i)-0;for(int jsize2-1;j0;j--){int t2num2.charAt(j)-0;res[ij1]t1*t2;}}for(int ires.length-1;i0;i--){res[i-1]res[i]/10;res[i]res[i]%10;}int startres[0]0?1:0;StringBuilder sbnew StringBuilder();for(int istart;ires.length;i){sb.append(res[i]);}return sb.toString();}
}