題目描述:
給定兩個以字串形式表示的非負整數 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)或直接將輸入轉換為整數來處理。
解題思路:
首先我考慮的是按照題目的要求 按步驟走,先將字串轉換為整數,再將相乘得到的整數轉回字串。
附上**:
class solution
//字串轉整數
public static int stringtoint(string s)
return sum;
}//整數轉字串
public static string inttostring(int num)
}
執行結果:
主要思想就是將每一位與另乙個整數的每一位做乘法,求得乘積,將乘積的每一位分解為各個位,個位結果與本位的進製數相加保留在本位,本位的進製數與結果中的進製數相加保留在進製位。依次類推。
**實現:
class solution
int length1 = num1.length();
int length2 = num2.length();
int result = new int[length1 + length2];
for(int j = length2 - 1;j >= 0;j--)
}
//去掉前導0
stringbuilder builder = new stringbuilder();
for (int i : result)
}return builder.length() == 0? "0" : builder.tostring();
}}
執行結果: 43 字串相乘
給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於110。nu...
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...
43 字串相乘
給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於110。nu...