原題
給定兩個以字串形式表示的非負整數 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...