您现在的位置是:主页 > news > 网站开发使用天气api/搜索引擎营销方案例子

网站开发使用天气api/搜索引擎营销方案例子

admin2025/5/23 23:36:53news

简介网站开发使用天气api,搜索引擎营销方案例子,在线做初中题网站,家教补习中心网站建设1. 题目描述 题目链接 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 “2”, num2 “3” 输出: “6” 示例 2: 输入: num1 “123”, num2 “456” 输出: “56088”…

网站开发使用天气api,搜索引擎营销方案例子,在线做初中题网站,家教补习中心网站建设1. 题目描述 题目链接 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 “2”, num2 “3” 输出: “6” 示例 2: 输入: num1 “123”, num2 “456” 输出: “56088”…

1. 题目描述
题目链接

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
示例 1:
输入: num1 = “2”, num2 = “3”
输出: “6”
示例 2:
输入: num1 = “123”, num2 = “456”
输出: “56088”
说明:
num1 和 num2 的长度小于110。
num1 和 num2 只包含数字 0-9。
num1 和 num2 均不以零开头,除非是数字 0 本身。
不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。

2. 题目分析
字符串相乘,主要应该是为了解决大数相乘的问题。基本数据类型无法胜任大数计算,除非像java有BigInteger这种专门的大数的数据类型,那么最好的方法就是将数字转换成字符串再计算,这样就不存在数据溢出的问题了。

3. 解决思路
既然归根到底都是乘法计算,虽然转换成了字符串,当然也要遵循乘法运算规则,两个多位数的乘法过程,都是每位相乘,然后错位相加,然后把错位相加后的结果保存到一个一维数组中,然后分别每位上算进位,最后每个数字都变成一位,然后要做的是去除掉首位0,最后把每位上的数字按顺序保存到结果中即可。

下面,我们以289*785为例,引用另外一个博主的事例,我们两的实现思路是一样,但他的把过程拆分了,过程更简单理解,只是效率更低,没有优化前的代码。
在这里插入图片描述

  • 首先我们把每一位相乘,得到一个没有进位的临时结果,如图中中间的一行红色数字就是临时结果。
  • 然后把临时结果从低位起依次进位。
  • 对于一个m位整数乘以n位整数的结果,最多只有m+n位。

4. 代码实现(java)

//思路:求解num1乘以num2的每一位,然后求和(求和时注意乘以10就行了)public String multiply(String num1, String num2) {String ret = "0";char[] num2s = num2.toCharArray();String ling = "";for(int i=num2s.length-1; i>=0; i--) {String sum1 = multiplyCore(num1, num2s[i]);sum1 = sum1 + ling;ling = ling + "0";ret = stringSum(ret, sum1);}while(ret.charAt(0) == '0' && ret.length() != 1)ret = ret.substring(1);return ret;}public String multiplyCore(String num1, char num) {char[] num1s = num1.toCharArray();int sum = 0;int jinwei = 0;int yushu = 0;String ret = new String();for(int i=num1s.length-1; i>=0; i--) {sum = (num1s[i]-'0') * (num - '0') + jinwei;jinwei = sum / 10;yushu = sum % 10;ret = yushu + ret;}if(jinwei != 0)ret = jinwei + ret;return ret;}public String stringSum(String num1, String num2) {char[] num1s = num1.toCharArray();char[] num2s = num2.toCharArray();int sum = 0;int jinwei = 0;int yushu = 0;String ret = "";int i = num1.length() - 1;int j = num2.length() - 1;for( ; i>=0 && j>=0; i--,j--) {sum = (num1s[i]-'0') + (num2s[j] - '0') + jinwei;jinwei = sum / 10;yushu = sum % 10;ret = yushu + ret;}while(i >= 0) {sum = (num1s[i]-'0') + jinwei;jinwei = sum / 10;yushu = sum % 10;ret = yushu + ret;i--;}while(j >= 0) {sum = (num2s[j]-'0') + jinwei;jinwei = sum / 10;yushu = sum % 10;ret = yushu + ret;j--;}if(jinwei != 0)ret = jinwei + ret;if(ret.charAt(0) == '0' && ret.length() != 1)ret = ret.substring(1);return ret;}