日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多写写 leetcode 43. 字符串相乘

發布時間:2025/5/22 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多写写 leetcode 43. 字符串相乘 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

難度:中等
頻次:55

題目:

給定兩個以字符串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字符串形式。

注意:不能使用任何內置的 BigInteger 庫或直接將輸入轉換為整數。

解題思路: 拆出來的乘法最后的結果是string,最后用string+string得出string

注意:
  • 前提先掌握字符串的相加
  • string下的==和equals的區別
  • 得反轉
代碼
class Solution {public String multiply(String num1, String num2) {// ==和equals的區別if(num1.equals("0") || num2.equals("0")) return "0";int len1=num1.length();int len2=num2.length();//每一行的計算結果String sum="";//都是從高位到低位for(int i=len2-1;i>=0;i--){StringBuilder temp=new StringBuilder();//乘法進位int carry=0;//補0,因為后面后面會反轉,所以放前面for(int k=0;k<len2-i-1;k++){temp.append('0');}int number2=num2.charAt(i)-'0';for(int j=len1-1;j>=0||carry!=0;j--){//進位int number1=j<0?0:num1.charAt(j)-'0';int a=(number1*number2+carry)%10;temp.append(a);carry=(number1*number2+carry)/10;}//最后記得反轉sum=add(sum,temp.reverse().toString());}return sum;}public String add(String num1,String num2){int len1=num1.length()-1;int len2=num2.length()-1;StringBuilder sum=new StringBuilder();int i=0;int carry=0;while(len1>=0||len2>=0||carry!=0){//這里只需要單獨判斷就行了,不需要放一起int temp1=len1>=0?num1.charAt(len1)-'0':0;int temp2=len2>=0?num2.charAt(len2)-'0':0;sum.append((temp1+temp2+carry)%10);carry=(temp1+temp2+carry)/10;len2--;len1--;}//最后記得反轉return sum.reverse().toString();} }

總結

以上是生活随笔為你收集整理的多写写 leetcode 43. 字符串相乘的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。