?LeetCode解法匯總43. 字符串相乘

目錄鏈接:

力扣編程題-解法匯總_分享+記錄-CSDN博客

GitHub同步刷題項目:

https://github.com/September26/java-algorithms

原題鏈接:力扣(LeetCode)官網 - 全球極客摯愛的技術成長平臺


描述:

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

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

示例 1:

輸入: num1 = "2", num2 = "3"
輸出: "6"

示例?2:

輸入: num1 = "123", num2 = "456"
輸出: "56088"

提示:

  • 1 <= num1.length, num2.length <= 200
  • num1?和?num2?只能由數字組成。
  • num1?和?num2?都不包含任何前導零,除了數字0本身。

解題思路:

* 解題思路:

* 我們就按照乘法的定義來,把num1和num2轉換成兩個int類型的數組v1和v2。

* 然后用v2的每一位乘以v1數組,得到一個新的數組。比如v1是[1,2,3],v2的位置上的數字位2,得到的結果就是[2,4,6]。

* 然后我們可以得到多個這樣的數組,求這些數組的和即可。注意的時,后面的數組,前面要插入若干個0.

* 比如200和[1,2,3],前面就需要插入兩個0.

 

代碼:

class Solution43
{
public:vector<int> multiplyItem(vector<int> v1, int value){vector<int> result;int carryValue = 0;for (int i : v1){int newValue = value * i + carryValue;carryValue = newValue / 10;result.push_back(newValue % 10);}if (carryValue > 0){result.push_back(carryValue);}return result;}/*** 兩個list合并*/vector<int> merge(vector<int> oldList, int startIndex, vector<int> newList){for (int i = 0; i < startIndex; i++){newList.insert(newList.begin(), 0);}int index = 0;int carry = 0;vector<int> list;while (index < oldList.size() || index < newList.size() || carry > 0){int oldValue = 0;int newValue = 0;if (index < oldList.size()){oldValue = oldList[index];}if (index < newList.size()){newValue = newList[index];}int value = oldValue + newValue + carry;carry = value / 10;list.push_back(value % 10);index++;}return list;}string multiply(string num1, string num2){vector<int> v1;vector<int> v2;for (char c : num1){v1.insert(v1.begin(), c - '0');}for (char c : num2){v2.insert(v2.begin(), c - '0');}vector<int> result;int index = 0;int leftStart = 0;for (int i = 0; i < v2.size(); i++){vector<int> newList = multiplyItem(v1, v2[i]);result = merge(result, i, newList);}string s;bool isStart = false;for (int i = 0; i < result.size(); i++){s.insert(0, to_string(result[i]));}string ss;for (char c : s){if (ss.size() == 0 && c == '0'){continue;}ss.push_back(c);}return ss.size() == 0 ? "0" : ss;}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/43752.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/43752.shtml
英文地址,請注明出處:http://en.pswp.cn/news/43752.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入探討API接口測試:從基礎到高級策略

引言&#xff1a;API測試的重要性 在當前的技術趨勢中&#xff0c;API&#xff08;應用程序接口&#xff09;已經成為連接各種系統和服務的基石。API不僅僅是大型企業的領域&#xff0c;中小型公司和初創公司也越來越依賴API來拓展他們的業務功能和跨系統通信。正因如此&#…

【深入淺出C#】章節 8: 網絡編程和遠程通信:網絡編程和遠程通信

計算機網絡是指連接多臺計算機設備&#xff0c;通過通信鏈路共享資源和信息的系統。它構建了一個相互連接的世界&#xff0c;使得人們可以在不同地點進行數據交換和資源共享。網絡編程是指在計算機網絡中&#xff0c;使用編程語言進行通信和數據傳輸的技術。現代應用中&#xf…

虛擬機問題

虛擬機無法識別USB設備 經排查為VMware USB Arbitration Service 沒有啟動,但是VMware USB Arbitration Service依賴于VMware Workstation Server啟動 VMware USB Arbitration Service(VMUSBArbService)是由 VMware 虛擬化軟件提供的一個服務,用于協調和管理主機系統上的…

Python數據分析實戰-*和**實現可變多參數的傳入或變量的拆解(附源碼和實現效果)

實現功能 *和**實現多參數的傳入或變量的拆解 實現代碼 # 1、實現多參數的傳入 def one(a,*b):"""a是一個普通傳入參數&#xff0c;*b是一個非關鍵字星號參數"""print(b) one(1,2,3,4,5,6) 其中&#xff0c;第一個的輸入可以理解為&#xff1a…

kafka配置遠程連接

要想實現在本地連接服務器的kafka&#xff0c;則必須在遠程kafka配置遠程連接 默認的 kafka 配置是無法遠程訪問的&#xff0c;解決該問題有幾個方案。 方案1 advertised.listenersPLAINTEXT://IP:9092 注意必須是 ip&#xff0c;不能是 hostname 方案2 advertised.listene…

【蟲洞攻擊檢測】使用多層神經網絡的移動自組織網絡中的蟲洞攻擊檢測研究(Matlab代碼實現)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;歡迎來到本博客????&#x1f4a5;&#x1f4a5; &#x1f3c6;博主優勢&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客內容盡量做到思維縝密&#xff0c;邏輯清晰&#xff0c;為了方便讀者。 ??座右銘&a…

阿里Canal學習筆記

github地址 canal 使用IDEA打開&#xff0c;注意國內加載慢的問題&#xff0c;解決方式如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http://w…

SpringBoot中優雅的實現隱私數據脫敏(提供Gitee源碼)

前言&#xff1a;在實際項目開發中&#xff0c;可能會對一些用戶的隱私信息進行脫敏操作&#xff0c;傳統的方式很多都是用replace方法進行手動替換&#xff0c;這樣會由很多冗余的代碼并且后續也不好維護&#xff0c;本期就講解一下如何在SpringBoot中優雅的通過序列化的方式去…

設計模式之備忘錄模式(Memento)的C++實現

1、備忘錄模式的提出 在軟件功能開發過程中&#xff0c;某些對象的狀態在轉換過程中&#xff0c;由于業務場景需要&#xff0c;要求對象能夠回溯到對象之前某個點的狀態。如果使用一些共有接口來讓其他對象得到對象的狀態&#xff0c;便會暴露對象的實現細節。備忘錄模式是在不…

【學會動態規劃】單詞拆分(24)

目錄 動態規劃怎么學&#xff1f; 1. 題目解析 2. 算法原理 1. 狀態表示 2. 狀態轉移方程 3. 初始化 4. 填表順序 5. 返回值 3. 代碼編寫 寫在最后&#xff1a; 動態規劃怎么學&#xff1f; 學習一個算法沒有捷徑&#xff0c;更何況是學習動態規劃&#xff0c; 跟我…

【模擬集成電路】反饋系統——基礎到進階(一)

【模擬集成電路】反饋系統——基礎到進階 前言1 概述2 反饋電路特性2.1增益靈敏度降低2.2 終端阻抗變化2.3 帶寬拓展2.4 非線性減小 3 放大器分類4 反饋檢測和返回機制4.1 按照檢測物理量分類4.2 按照檢測拓撲連接分類 5 反饋結構分析6 二端口方法7 波特方法6 麥德布魯克方法 前…

VS2015打開Qt的pro項目文件 報錯

QT報錯&#xff1a;Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isn‘t set 解決方法&#xff1a; 找到本機安裝的QT路徑&#xff0c;找到“msvc-version.conf”文件&#xff0c;用記事本打開&#xff0c; 在其中添加版本“QMAKE_MSC_VER 1900”保存即可。 …

Kafka基礎及常見面試題

1. 用途 1. 流量削峰 2. 流計算 2. Kafka的核心組件 在Kafka中&#xff0c;Producer、Broker和Consumer是三個關鍵的角色&#xff0c;它們在整個消息傳遞過程中扮演不同的角色和功能&#xff1a;1. **Producer&#xff08;生產者&#xff09;**&#xff1a;生產者是消息的發…

CSS:filter濾鏡 詳解(用法 + 代碼 + 例子 + 效果)

文章目錄 filter 濾鏡blur() 模糊度例子 漸變光暈 brightness() 元素亮度contrast() 對比度grayscale() 元素灰度hue-rorate() 色相opacity() 透明度invert() 反轉顏色saturate() 飽和度 backdrop-filter 蒙版&#xff0c;濾鏡例子 卷軸展開 filter 濾鏡 動圖為效果添加前后對…

界面組件Telerik UI for WinForms R2 2023——擁有VS2022暗黑主題

Telerik UI for WinForms擁有適用Windows Forms的110多個令人驚嘆的UI控件。所有的UI for WinForms控件都具有完整的主題支持&#xff0c;可以輕松地幫助開發人員在桌面和平板電腦應用程序提供一致美觀的下一代用戶體驗。 Telerik UI for WinForms R2 2023于今年6月份發布&…

Blender 混合現實3D模型制作指南【XR】

本教程分步展示如何&#xff1a; 減少 3D 模型的多邊形數量&#xff0c;使其滿足 Microsoft Dynamics 365 Guides 和使用 Microsoft Power Apps 創建的應用程序中包含的混合現實組件的特定性能目標的性能需求。將 3D 模型的多種材質&#xff08;顏色&#xff09;組合成可應用于…

?Kubernetes的演變:從etcd到分布式SQL的過渡

DevRel領域專家Denis Magda表示&#xff0c;他偶然發現了一篇解釋如何用PostgreSQL無縫替換etcd的文章。該文章指出&#xff0c;Kine項目作為外部etcd端點&#xff0c;可以將Kubernetes etcd請求轉換為底層關系數據庫的SQL查詢。 受到這種方法的啟發&#xff0c;Magda決定進一步…

軟件測試技術之如何編寫測試用例(6)

四、客戶端兼容性測試 1、平臺測試 市場上有很多不同的操作系統類型&#xff0c;最常見的有Windows、Unix、Macintosh、Linux等。Web應用系統的最終用戶究竟使用哪一種操作系統&#xff0c;取決于用戶系統的配置。這樣&#xff0c;就可能會發生兼容性問題&#xff0c;同一個應…

求Win11系統virtualbox+vagrant安裝MacOS虛擬機

文章目錄 一、背景二、素材2.1、virtualboxvagrant 三、問題3.1、安裝失敗3.2、第二個失敗3.3、網絡說 四、求助 一、背景 題主&#xff0c;主要是窮&#xff0c;沒錢買mac筆記本或相關系統的蘋果產品&#xff0c;哈哈&#xff0c;偶爾也有用過MacOS系統&#xff0c;只是還沒有…

actuator/prometheus使用pushgateway上傳jvm監控數據

場景 準備 prometheus已經部署pushgateway服務&#xff0c;訪問{pushgateway.server:9091}可以看到面板 實現 基于springboot引入支持組件&#xff0c;版本可以 <!--監控檢查--><dependency><groupId>org.springframework.boot</groupId><artifa…