字符串相加

題意:

給定兩個字符串形式的非負整數 num1num2 ,計算它們的和并同樣以字符串形式返回。

你不能使用任何內建的用于處理大整數的庫(比如 BigInteger), 也不能直接將輸入的字符串轉換為整數形式。

示例 1:

輸入:num1 = “11”, num2 = “123”
輸出:"

134"

示例 2:

輸入:num1 = “456”, num2 = “77”
輸出:“533”

示例 3:

輸入:num1 = “0”, num2 = “0”
輸出:“0”

提示:

  • 1 <= num1.length, num2.length <= 10^4
  • num1num2 都只包含數字 0-9
  • num1num2 都不包含任何前導零

題目來源: https://leetcode.cn/problems/add-strings/description/

解題方法:

方法一:長度以0補齊,從個位開始相加(從后往前),判斷是否進一

// 長度以0補齊,從個位開始相加,判斷是否進一
function addStrings($num1, $num2) {$strLen1 = strlen($num1);$strLen2 = strlen($num2);// 找到長的字符串的長度,用于循環$strlen = $strLen1 >= $strLen2 ? $strLen1 : $strLen2;// 短的字符串前補0if($strLen1 > $strLen2){$num2 = str_repeat("0", $strLen1 - $strLen2) . $num2;}else{$num1 = str_repeat("0", $strLen2 - $strLen1) . $num1;}$result = "";   //結果$is_add_one = 0;    //兩者相加是否大于等于10,來判斷是否進行加一for($i = $strlen - 1; $i >= 0; $i--){if(($num1[$i] + $num2[$i] + $is_add_one) >= 10){    //如果大于等于10,取個位進一$result = strval($num1[$i] + $num2[$i] + $is_add_one)[1] . $result;$is_add_one = 1;if($i == 0){$result = "1" . $result;    //循環到最大位時前補一}}else{  //小于10時,相加即可$result = strval($num1[$i] + $num2[$i] + $is_add_one) . $result;$is_add_one = 0;}}return $result;  
}

方法二: 從后向前,對應的位置的數字相加,如果結果大于 9,需要進位
難點: 1.難點進位處理 2.最高位進位處理

此方法參考:
作者:Zou Zhipeng
鏈接:https://leetcode.cn/problems/add-strings/solutions/202746/php-jie-fa-by-zzpwestlife-51/
來源:力扣(LeetCode)

// 從后向前,對應的位置的數字相加,如果結果大于 9,需要進位
// 1.難點進位處理 2.最高位進位處理
function addStrings($num1, $num2) {$len1 = strlen($num1);$len2 = strlen($num2);if($len1 == 0) return $num2;if($len2 == 0) return $num1;// 從最低位開始處理$i = $len1 - 1;$j = $len2 - 1;// 進位標記$carry = 0;$return = '';// 使用該判斷條件,一次遍歷處理完所有情況while ($i >= 0 || $j >= 0 || $carry){$sum = $carry;if($i >= 0){$sum += substr($num1, $i, 1);$i--;}if($j >= 0){$sum += substr($num2, $j, 1);$j--;}// 進位處理$carry = floor($sum / 10);$return = $sum % 10 . $return;}return $return;
}

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

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

相關文章

利用STM32CubeMX解讀時鐘樹

1&#xff0c;低速時鐘 LSE是外部晶振作時鐘源&#xff0c;主要提供給實時時鐘模塊&#xff0c;所以一般采用32.768KHz。LSI是由內部RC振蕩器產生&#xff0c;也主要提供給實時時鐘模塊&#xff0c;頻率大約為40KHz。(LSE和LSI)只是提供給芯片中的RTC(實時時鐘)及IWDG(獨立看門…

【c++】棧教程

今天來講講棧 棧是什么&#xff1f; 老樣子&#xff0c;先來看一道題&#xff1a; 【棧】棧的基本操作 描述 棧的定義&#xff1a;棧是一種特殊的表這種表只在表頭進行插入和刪除操作。因此&#xff0c;表頭對于棧來說具有特殊的意義&#xff0c;稱為棧頂。相應地&#xff0…

佳易王羽毛球館計時計費軟件燈控系統安裝教程

佳易王羽毛球館計時計費軟件燈控系統安裝教程 佳易王羽毛球館計時計費軟件&#xff0c;點擊開始計時的時候&#xff0c;自動打開燈&#xff0c;結賬后自動關閉燈。 因為場館每一場地的燈功率都很大&#xff0c;需要加裝交流接觸器。這個由專業電工施工。 1、計時計費功能 &…

docker安裝mysql8

之前自己在網上找了一些docker安裝mysql8的方法&#xff0c;結果都不行&#xff0c;于是自己根據自己遇到的情況再結合網上搜索到的安裝方式調整了一下&#xff0c;成功執行安裝。以下是我自己的執行命令 先拉取docekr鏡像 docker pull mysql:8.0.20啟動鏡像 docker run -p 3…

使用Git bash切換Gitee、GitHub多個Git賬號

Git是分布式代碼管理工具&#xff0c;使用命令行的方式提交commit、revert回滾代碼。這里介紹使用Git bash軟件來切換Gitee、GitHub賬號。 ? ? 假設在gitee.com上的郵箱是alicefoxmail.com 、用戶名為alice&#xff1b;在github上的郵箱是bobfoxmail.com、用戶名為bob。 賬號…

tcp/ip協議2實現的插圖,數據結構2 (19 - 章)

(68) 68 十九1 選路請求與消息 函rtalloc,rtalloc1,rtfree (69)

HarmonyOS ArkTS 保存應用數據(十)

1 概述 在移動互聯網蓬勃發展的今天&#xff0c;移動應用給我們生活帶來了極大的便利&#xff0c;這些便利的本質在于數據的互聯互通。因此在應用的開發中數據存儲占據了非常重要的位置&#xff0c;HarmonyOS應用開發也不例外。 2 什么是首選項 首選項為應用提供Key-Value鍵…

Java面向對象第2天

精華筆記&#xff1a; 構造方法&#xff1a;構造函數、構造器、構建器---------------復用給成員變量賦初始值代碼 作用&#xff1a;給成員變量賦初始值 與類同名&#xff0c;沒有返回值類型(連void都沒有) 在創建(new)對象時被自動調用 若自己不寫構造方法&#xff0c;則編…

Electron+VUE3開發簡版的編輯器【文件預覽】

簡版編輯器的功能主要是: 打開對話框,選擇文件后臺讀取文件文件前端展示文件內容。主要技術棧是VUE3、Electron和Nodejs,VUE3做頁面交互,Electron提供一個可執行Nodejs的環境以及支撐整個應用的環境,nodeJS負責讀取文件內容。 環境配置、安裝依賴這些步驟就不再敘述了。 …

SQL Server 百萬數據查詢優化技巧三十則

點擊上方藍字關注我 互聯網時代的進程越走越深&#xff0c;使用MySQL的人也越來越多&#xff0c;關于MySQL的數據庫優化指南很多&#xff0c;而關于SQL SERVER的T-SQL優化指南看上去比較少&#xff0c;近期有學習SQLSERVER的同學問到SQL SERVER數據庫有哪些優化建議&#xff1f…

Linux進程通信——信號(一)

原理 對于 Linux來說&#xff0c;實際信號是軟中斷&#xff0c;許多重要的程序都需要處理信號。 信號&#xff0c;為 Linux 提供了一種處理異步事件的方法。比如&#xff0c;終端用戶輸入了ctrlc來中斷程序&#xff0c;會通過信號機制停止一個程序。 概述 信號的名字和編號 …

【Docker】從零開始:8.Docker命令:Commit提交命令

【Docker】從零開始&#xff1a;8.Docker命令:Commit命令 基本概念鏡像鏡像分層什么是鏡像分層為什么 Docker 鏡像要采用這種分層結構 本章要點commit 命令命令格式docker commit 操作參數實例演示1.下載一個新的ubuntu鏡像2.運行容器3.查看并安裝vim4.退出容器5提交自己的鏡像…

【數據結構/C++】線性表_雙鏈表基本操作

#include <iostream> using namespace std; typedef int ElemType; // 3. 雙鏈表 typedef struct DNode {ElemType data;struct DNode *prior, *next; } DNode, *DLinkList; // 初始化帶頭結點 bool InitDNodeList(DLinkList &L) {L (DNode *)malloc(sizeof(DNode))…

成為AI產品經理——模型評估概述

目錄 一、模型宣講和評估的原因 二、模型宣講 三、模型評估 1. 重要特征 ① 特征來源 ②特征意義 2.選擇測試樣本 3.模型性能和穩定性 一、模型宣講和評估的原因 劉海豐老師提到他們在做一個金融AI產品未注重模型指標&#xff0c;過于注重業務指標&#xff0c;導致產生…

解決:ImportError: cannot import name ‘Adam‘ from ‘keras.optimizers‘

解決&#xff1a;ImportError: cannot import name ‘Adam‘ from ‘keras.optimizers‘ 背景 在使用之前的代碼時&#xff0c;報錯&#xff1a; from keras.optimizers import Adam ImportError: cannot import name ‘Adam’ 報錯問題 from keras.optimizers import Adam I…

2023年亞太數學建模大賽--A題(水果采摘機器人的圖像識別功能)

中國是世界上最大的蘋果生產國&#xff0c;年產量約為 3500 萬噸。同時&#xff0c;中國也是世界上最大的蘋果出口國&#xff0c;世界上每兩個蘋果中就有一個出口到國。世界上每兩個蘋果中就有一個來自中國&#xff0c;中國出口的蘋果占全球出口量的六分之一以上。來自中國。中…

Vue CLI的介紹【vue利器之一】

文章目錄 前言Vue CLI 介紹CLICLI 服務CLI 插件后言 前言 hello world歡迎來到前端的新世界 &#x1f61c;當前文章系列專欄&#xff1a;vue.js &#x1f431;?&#x1f453;博主在前端領域還有很多知識和技術需要掌握&#xff0c;正在不斷努力填補技術短板。(如果出現錯誤&am…

【Java 進階篇】Redis持久化之RDB:數據的安全守護者

Redis&#xff0c;作為一款高性能的鍵值存儲系統&#xff0c;支持多種持久化方式&#xff0c;其中RDB&#xff08;Redis DataBase&#xff09;是其最常用的一種。RDB可以將當前時刻的數據快照保存到磁盤&#xff0c;以便在Redis重啟時快速恢復數據。本文將深入探討RDB的原理、配…

飛書智能伙伴之 AI 數智參謀:先進團隊,北極星指標也要遙遙領先

11 月 22 日&#xff0c;飛書在 2023 秋季飛書未來無限大會上正式發布了飛書智能伙伴。作為首批生態伙伴&#xff0c;基于 Kyligence 智能一站式指標平臺實現的 AI 數智參謀也正式亮相。這是繼 11 月 21 日 Kyligence 產品發布會后&#xff0c;Kyligence 在數據驅動決策智能領域…

第十五屆藍橋杯(Web 應用開發)模擬賽 1 期-大學組(詳細分析解答)

目錄 1.動態的Tab欄 1.1 題目要求 1.2 題目分析 1.3 源代碼 2.地球環游 2.1 題目要求 2.2 題目分析 2.3 源代碼 3.迷惑的this 3.1 題目要求 3.2 題目分析 3.3 源代碼 4.魔法失靈了 4.1 題目要求 4.2 題目分析 4.3 源代碼 5.燃燒你的卡路里 5.1 題目要求 5.2…