leetcode 8: 字符串轉整數(atoi)

實現 atoi,將字符串轉為整數。

該函數首先根據需要丟棄任意多的空格字符,直到找到第一個非空格字符為止。如果第一個非空字符是正號或負號,選取該符號,并將其與后面盡可能多的連續的數字組合起來,這部分字符即為整數的值。如果第一個非空字符是數字,則直接將其與之后連續的數字字符組合起來,形成整數。

字符串可以在形成整數的字符后面包括多余的字符,這些字符可以被忽略,它們對于函數沒有影響。

當字符串中的第一個非空字符序列不是個有效的整數;或字符串為空;或字符串僅包含空白字符時,則不進行轉換。

若函數不能執行有效的轉換,返回 0。

說明:

假設我們的環境只能存儲 32 位有符號整數,其數值范圍是?[?231,? 231?? 1]。如果數值超過可表示的范圍,則返回 ?INT_MAX (231?? 1) 或?INT_MIN (?231) 。

示例?1:

輸入: "42"
輸出: 42

示例?2:

輸入: "   -42"
輸出: -42
解釋: 第一個非空白字符為 '-', 它是一個負號。我們盡可能將負號與后面所有連續出現的數字組合起來,最后得到 -42 。

示例?3:

輸入: "4193 with words"
輸出: 4193
解釋: 轉換截止于數字 '3' ,因為它的下一個字符不為數字。

示例?4:

輸入: "words and 987"
輸出: 0
解釋: 第一個非空字符是 'w', 但它不是數字或正、負號。因此無法執行有效的轉換。

示例?5:

輸入: "-91283472332"
輸出: -2147483648
解釋: 數字 "-91283472332" 超過 32 位有符號整數范圍。 因此返回 INT_MIN
解答:
 1 int myAtoi(string str) {
 2         int res = 0;
 3         int flag = 1;
 4         int i = 0;
 5         while(str[i] == ' ' && i < str.size())
 6             ++i;
 7         if(i < str.size())
 8         {
 9             if(str[i] == '-')
10             {
11                 flag = -1;
12                 i++;
13             }
14             else if(str[i] == '+')   
15                 i++;
16             else if(str[i] < '0' || str[i] > '9')
17                 return 0;
18             for(; i < str.size(); ++i)
19             {
20                 if(str[i] < '0' || str[i] > '9')
21                     break;
22                 if(res > INT_MAX / 10 || (res == INT_MAX/10 && str[i] - '0' > INT_MAX %10))
23                     return flag > 0 ? INT_MAX : INT_MIN;
24                 res = res * 10 + str[i] - '0';
25             }
26             
27         }
28         return res * flag;
29     }

?

轉載于:https://www.cnblogs.com/bzaq/p/9950360.html

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

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

相關文章

優秀產品頁設計:將訪問者轉化成客戶

摘要&#xff1a;本文是對外文《 Better Product Pages: Turn Visitors Into Customers 》的翻譯&#xff0c;編譯內容如下&#xff1a; 展示產品、服務的方法是其獲得成功的關鍵。在Web上&#xff0c;你留給用戶的第一印象是至關重要的。 如果有人訪問你的網站&#xff0c;一定…

計算機網絡學習方法

原文見&#xff1a;http://blog.csdn.net/qq_33506160/article/details/51872708 一、網絡課程究竟難在哪&#xff1f; 1&#xff0e;內容比較亂 如果把《計算機網絡技術基礎》看做是一本計算機網絡導論方面的教材&#xff0c;就不會認為亂了&#xff0c;因為導論就是為了解決知…

小程序類似抖音視頻整屏切換

更新 現在已經更新了github地址和效果gif&#xff0c;可在文章最后查看。如果我的代碼對你有用&#xff0c;請幫我隨手star一下。 需求 最近在項目中需要加一個功能&#xff0c;在小程序中將已有的短視頻功能&#xff0c;按照抖音的方式來瀏覽&#xff0c;整屏&#xff0c;可上…

Coding For Fun 32小時:充滿創造、激情、團結的編程馬拉松

摘要&#xff1a;Coding for Fun大賽是2012中國軟件開發者大會&#xff08;SDCC&#xff09;的重要環節。由六名黑馬學員組成的“天翼二隊”&#xff0c;經過32小時的“血拼”&#xff0c;憑大賽作品“語音控”&#xff0c;獲得了本次大賽的“最佳設計獎”。本文是該隊隊員的參…

centos6.8安裝oracle12C 詳細步驟講解

2019獨角獸企業重金招聘Python工程師標準>>> centos6.8安裝oracle12C 詳細步驟講解 安裝前環境配置 1 root身份安裝依賴包 [rootdlp ~]# yum -y install binutils compat-libcap1 compat-libstdc-33 compat-libstdc-33.i686 gcc gcc-c glibc glibc.i686 glibc-deve…

解決 springboot 項目:找不到或無法加載主類

Spring Boot下無法加載主類 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 我什么也沒有改&#xff0c;啟動服務報錯如題&#xff1a;找不到或無法加載主類 解決&#xff1a;什么也不…

管理好你的愿望,人生將另一個樣

別讓欲望控制了你欲望是人的本性。人生在世&#xff0c;誰都會有欲望。物欲、食欲、情欲、發財欲、求知欲……欲望是消防隊也無法撲滅的火。作為人&#xff0c;我們不能消除欲望&#xff0c;也不能讓欲望漫無邊際地增長&#xff0c;所以&#xff0c;我們應該把握好欲望的尺度&a…

25 模塊和包

今日內容 import from xxx import xxxx 金庸 1. 導入模塊的執行的步驟 2. 自定義模塊 3. 自定義包(難點) 一個表達式 -> 一條語句 -> 語句塊 -> 函數 -> 類 -> 模塊 -> 包 -> 項目 包就是我們的文件夾, 包內可以寫很…

【許曉笛】 EOS 智能合約案例解析(2)

詳解 EOS 智能合約的 cpp 文件 之前的文章介紹了 eosio.token 智能合約的 hpp 文件&#xff0c;這次向大家介紹 eosio.token.cpp 文件&#xff0c;cpp 文件即 C 代碼文件&#xff0c;智能合約所有的業務邏輯內容都是在 cpp 文件中實現的。 eosio.token.cpp 文件地址&#xff1a…

java 中 transient關鍵字

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 java語言的關鍵字&#xff0c;變量修飾符&#xff0c;如果用transient聲明一個實例變量&#xff0c;當對象存儲時&#xff0c;它的值不需…

java中int轉成String位數不足前面補零

java中int轉成String位數不足前面補零 轉載自&#xff1a;http://ych0108.iteye.com/blog/2174134java中int轉String位數不夠前面補零 String.format("%010d", 25); //25為int型 10代表前面要補的字符 10代表字符串長度 d表示參數為整數類型 今天想將int 轉String 位…

Oops! the requested resource is not found!

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 情況一&#xff1a;調用 dubbo 服務失敗&#xff0c;報錯如題&#xff1a;Oops! the requested resource is not found! 原因很簡單&am…

django URL路由基礎

URL是Web服務的入口&#xff0c;用戶通過瀏覽器發送過來的任何請求&#xff0c;都是發送到一個指定的URL地址&#xff0c;然后被響應。 在Django項目中編寫路由&#xff0c;就是向外暴露我們接收哪些URL的請求&#xff0c;除此之外的任何URL都不被處理&#xff0c;也沒有返回。…

Linux在超級計算機領域一統天下

摘要&#xff1a;在世界超級計算機排行榜500強榜單中&#xff0c;基于Linux的超級計算機占據了462個席位&#xff0c;比率高達92%。基于Windows的超級計算機僅有2個席位&#xff0c;份額為0.4%。中國基于Windows的超級計算機Magic Cube排名94位&#xff0c;澳大利亞基于Windows…

Qtum量子鏈漏洞賞金計劃正式開啟

本次Qtum量子鏈賞金計劃為了更好的借助社區的力量參與到QTUM主網及周邊應用的開發建設中&#xff0c;讓QTUM持續地保持安全、高效的運行&#xff0c;同時能滿足更多用戶的需求。Bug分級與獎勵體系1、如果已經有類似的Issue或者Qtum團隊已經知道并在解決該問題的情況將不適用于該…

.SpelEvaluationException: EL1008E: Property or field ‘cache_department_list_Tree‘ cannot be found

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 報錯如題&#xff1a; .SpelEvaluationException: EL1008E: Property or field cache_department_list_Tree cannot be found on object…

修過的一個android framework原生系統代碼bug

“坑”描述&#xff1a; 在對我們自己研發的一款android終端進行camera拍照壓力測試時&#xff0c;發現當拍照張數達到幾萬張時&#xff0c;查看內存占用情況&#xff0c;發現內存泄露。 填“坑”&#xff1a; frameworks/base/core/jni/android/graphics/YuvToJpegEncoder.…

Koa項目搭建過程詳細記錄

2019獨角獸企業重金招聘Python工程師標準>>> Java中的Spring MVC加MyBatis基本上已成為Java Web的標配。Node JS上對應的有Koa、Express、Mongoose、Sequelize等。Koa一定程度上可以說是Express的升級版。許多Node JS項目已開始使用非關系型數據庫(MongoDB)。Sequel…

商業項目中代碼質量是否重要?

這是一篇比較老的 文章&#xff0c;但是文中的這些問題在現在仍然普遍存在。代碼質量的高低與商業產品的優劣是否有直接的影響&#xff1f;開發者Frank Sommers在文中給出了他的看法。文章內容如下。在大多數商業項目中&#xff0c;代碼質量并不被看重&#xff0c;因為大部分情…

Class is not a root resource. It, or one of its interfaces must be annotated with @Path:

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 報錯如題&#xff1a; Class is not a root resource. It, or one of its interfaces must be annotated with Path:XXXX 這是一個dub…