摘要:題目詳情題目要求輸入兩個以字符串形式表示的正整數(shù),要求我們求出它們的乘積,同樣也是字符串形式表示。要求不能直接將字符串轉(zhuǎn)換為整數(shù)進行乘法運算。想法這道題的思路就是將我們平時手算多位數(shù)乘法的計算方法,轉(zhuǎn)換成程序語言。
題目詳情
Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2.想法
Note:
-The length of both num1 and num2 is < 110.
-Both num1 and num2 contains only digits 0-9.
-Both num1 and num2 does not contain any leading zero.
-You must not use any built-in BigInteger library or convert the inputs to integer directly.題目要求輸入兩個以字符串形式表示的正整數(shù),要求我們求出它們的乘積,同樣也是字符串形式表示。要求不能直接將字符串轉(zhuǎn)換為整數(shù)進行乘法運算。
這道題的思路就是將我們平時手算多位數(shù)乘法的計算方法,轉(zhuǎn)換成程序語言。
對于兩個長度分別為m,n的字符串,乘法操作獲得的字符串res長度為m+n(第一位可以是0)
首先我們看一下下面這張圖
這個例子里我們的操作順序是,用5分別乘以1,2,3;隨后再用4分別乘以1,2,3.每次對位的乘法操作我們默認(rèn)他會獲得一個兩位數(shù)(第一位可以是0)
如果進行乘法操作的兩位在各自字符串中的位置為i和j,那么生成的兩位數(shù)在結(jié)果字符串res中對應(yīng)的位置應(yīng)當(dāng)是i+j和i+j+1
將乘法結(jié)果和對應(yīng)位置上的已有數(shù)相加,再將結(jié)果放到對應(yīng)位置。
解法public String multiply(String num1, String num2) { int m = num1.length(); int n = num2.length(); int[] pos = new int[m+n]; //計算 for(int i=m-1;i>=0;i--){ for(int j=n-1;j>=0;j--){ int mul = (num1.charAt(i)-"0")*(num2.charAt(j)-"0"); int p1 = i + j; int p2 = i + j + 1; int sum = mul + pos[p2]; pos[p1] += sum / 10; pos[p2] = sum % 10; } } StringBuilder sb = new StringBuilder(); for(int p : pos) if(!(sb.length() == 0 && p == 0)) sb.append(p); return sb.length() == 0 ? "0" : sb.toString(); }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/76349.html
摘要:題目要求將兩個形式的數(shù)字相乘的結(jié)果用的形式返回。不準(zhǔn)使用以外的形式來記錄數(shù)字。假設(shè),則將結(jié)果的十位和個位分別放在數(shù)組下標(biāo)為和的位置上。存儲的位置等同于上一思路。然后再通過一輪遍歷將進位處理一下。 題目要求 Given two non-negative integers num1 and num2 represented as strings, return the product of...
摘要:是最高位代表進位,表示本位。就是本位的乘積加上本位已有的值。進位就是除以的余數(shù)本位就是剩下的個位數(shù)。 43 Multiply Strings 關(guān)鍵詞,進位。 public class Solution { public String multiply(String num1, String num2) { int m = num1.length(), n = n...
摘要:因為被乘數(shù)每一位數(shù)字和乘數(shù)相乘的結(jié)果是依次錯開的,所以就沒問題。判斷兩個數(shù)的大小的方法,是先判斷其長度,如果長度不一樣,則較長的較大,如果長度一樣,則需要比較每一位。 Multiply Strings Given two numbers represented as strings, return multiplication of the numbers as a string. ...
摘要:前言從開始寫相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時也沒有按順序?qū)懍F(xiàn)在翻起來覺得蠻亂的。可能大家看著也非常不方便。所以在這里做個索引嘻嘻。順序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 從開始寫leetcode相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時也沒有按順序?qū)憽F(xiàn)在翻起來覺得蠻亂的。可能大家看著也非常不方便。所以在這里做個索引嘻嘻。 順序整理 1~50 1...
摘要:給定兩個以字符串形式表示的非負(fù)整數(shù)和,返回和的乘積,它們的乘積也表示為字符串形式。示例輸入輸出示例輸入輸出說明和的長度小于。和均不以零開頭,除非是數(shù)字本身。不能使用任何標(biāo)準(zhǔn)庫的大數(shù)類型比如或直接將輸入轉(zhuǎn)換為整數(shù)來處理。 給定兩個以字符串形式表示的非負(fù)整數(shù) num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字符串形式。示例 1: 輸入: num1 = 2, ...
閱讀 2849·2021-11-22 11:56
閱讀 3553·2021-11-15 11:39
閱讀 898·2021-09-24 09:48
閱讀 759·2021-08-17 10:14
閱讀 1322·2019-08-30 15:55
閱讀 2753·2019-08-30 15:55
閱讀 1310·2019-08-30 15:44
閱讀 2775·2019-08-30 10:59