領扣43 字串相乘

2021-09-24 03:20:36 字數 1624 閱讀 7972

原題

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

解題思路

將我們現實中使用的乘法運算步驟進行分解之後求結果

乘法運算可以看成是num1和num2從後往前依次相乘

在進行一次相乘後會得到乙個字串結果,將結果求和

注意

在進行結果求和時第n個結果的字串和第n-1個字串時,會向左移動n位;

**

public static string multiply(string num1, string num2) 

if(num1.equals("1"))

if(num2.equals("1"))

string str = "";

for(int i = num2.length() - 1 , j = 0; i >= 0; i --, j++)

return str;

}public static string getstringadd(string str1, string str2, int index)

stringbuffer sb = new stringbuffer();

stringbuffer sb1 = new stringbuffer(str1);

stringbuffer sb2 = new stringbuffer(str2);

for(int i = index; i < sb1.length(); i++)

if(sb1.length() < sb2.length())

sb1 = sb1.reverse();

}if(sb1.length() > sb2.length())

sb2 = sb2.reverse();

}int count = 0;

for(int i = sb1.length() - 1; i >= 0; i--)

if(temp >= 10)

}if(count != 0)

return sb.reverse().tostring();

}public static string getsinglemul(string singnum, string num)

if(tmp < 10)

}if(count != 0)

return sb.reverse().tostring();

}

解釋

string getsinglemul(string singnum, string num):

這個方法是將乙個數字和乙個字串相乘並返回結果(可以看成是num1和num2中的一位進行運算)

getstringadd(string str1, string str2, int index):

這個方法是將兩個字串進行求和,後面的index引數是指str2需要往左移位的長度(當index為str.length()時,就相當於兩個字串正常相加)

感覺解題的過程可以將事物本質看的更清楚,雖然解題的技巧不如別人,但將這一過程實現出來也還是不錯的吧。

43 字串相乘

給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於110。nu...

43 字串相乘

題目描述 給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於1...

43 字串相乘

小聲bb,直接int 多好 既然題目要求不能直接用int 我只好開動我的大腦開始想有什麼解決方案。然後首先想到的就是小學時候老師教乘法時用乘式寫法。1 2 3 4 5 6 1 5 4 9 2 5 5 3 51 2 3 4 5 1 51 0 0 5 0 6 1 5 1 20 8 0 4 0 5 5 3...