最近的行情,回暖了。。。
但是评论区的画风却不一样。有的小伙伴一本正经:“是的,机会多多,建议亲先裸辞再找呢”你小子,害人不浅。
无独有偶,又有小伙伴出来反串了:“行情太好了,一个一个都跑出国外啦”好好好,我信你个鬼。
还有老实人开玩笑:“是的,我拿了两个offer并且都已入职。白天顺丰,晚上滴滴。”灵活就业是吧,想上班就上班。
最后,还有一位朋友也是:“我就是那个{听人}”行,出门在外,身份是自己给的。
看了一圈下来,大部分是串子,只有很少的人说行情好转。看来{听人}不可信啊,行情还是那样。
但是,陆陆续续有人说回暖了,也许,行情是真的在一点点变好。那么你们怎么觉得呢?
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
注意:不能使用任何内置的库函数,如 BigInt。
专属福利 👉点击领取:最全Python资料合集
字符串相乘的基本思想可以借鉴传统的纸笔计算方法:即从右到左,逐位相乘,然后将各位的结果累加。关键点在于处理每一位相乘后的进位以及最后的累加。
创建一个长度为 num1.length + num2.length 的数组 result,用于存储乘法的每一位结果。
遍历 num1 和 num2 的每一位,将每一位的乘积加到 result 的对应位置。
处理进位:从左到右遍历 result,将超过 10 的部分向前一位进位。
将 result 转换为字符串,注意去除前导零。
Java实现
public class Solution {public String multiply(String num1, String num2) {if (num1.equals("0") || num2.equals("0")) return "0";int[] result = new int[num1.length() + num2.length()];for (int i = num1.length() - 1; i >= 0; i--) {for (int j = num2.length() - 1; j >= 0; j--) {int mul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');int sum = mul + result[i + j + 1];result[i + j + 1] = sum % 10;result[i + j] += sum / 10;}}StringBuilder sb = new StringBuilder();for (int p : result) if (!(sb.length() == 0 && p == 0)) sb.append(p);return sb.toString();}}
function multiply(num1, num2) {if (num1 === "0" || num2 === "0") return "0";let result = new Array(num1.length + num2.length).fill(0);for (let i = num1.length - 1; i >= 0; i--) {for (let j = num2.length - 1; j >= 0; j--) {const mul = (num1[i] - '0') * (num2[j] - '0');const sum = mul + result[i + j + 1];result[i + j + 1] = sum % 10;result[i + j] += Math.floor(sum / 10);}}if (result[0] === 0) result.shift();return result.join('');}
package mainimport ("strings")func multiply(num1 string, num2 string) string {if num1 == "0" || num2 == "0" {return "0"}result := make([]int, len(num1)+len(num2))for i := len(num1) - 1; i >= 0; i-- {for j := len(num2) - 1; j >= 0; j-- {mul := int(num1[i]-'0') * int(num2[j]-'0')sum := mul + result[i+j+1]result[i+j+1] = sum % 10result[i+j] += sum / 10}}resultStr := strings.Builder{}for i, v := range result {if !(i == 0 && v == 0) {resultStr.WriteString(string(rune(v + '0')))}}return resultStr.String()}
算法解析
以 num1 = "123" 和 num2 = "456" 为例,按照上述算法步骤执行,可以得到结果 "56088"。
测试代码可以根据上述实现直接运行,以验证算法的正确性。
热门推荐