LeetCodeOJ. String to Integer (atoi)

試題請參見:?https://oj.leetcode.com/problems/string-to-integer-atoi/

題目概述

Implement atoi to convert a string to an integer.
Hint:?Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes:?It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
spoilers alert...
Requirements for atoi:
The function first discards as many whitespace characters as necessary until the first non-whitespace character is found. Then, starting from this character, takes an optional initial plus or minus sign followed by as many numerical digits as possible, and interprets them as a numerical value.
The string can contain additional characters after those that form the integral number, which are ignored and have no effect on the behavior of this function.
If the first sequence of non-whitespace characters in str is not a valid integral number, or if no such sequence exists because either str is empty or it contains only whitespace characters, no conversion is performed.
If no valid conversion could be performed, a zero value is returned. If the correct value is out of the range of representable values, INT_MAX (2147483647) or INT_MIN (-2147483648) is returned.

解題思路

這道題目還真是艱辛~ 看起來非常基礎, 但是有些Case還真是暗藏玄機.
主要問題還是推斷是否越界.?
我的做法是, 記錄n = n * 10 + currentDigit運算前n的值. 若運算后n / 10和之前記錄下來的值相等, 則還未越界.

源碼

class Solution {
public:int atoi(const char *str) {int n = 0;bool isPositive = true;size_t i = 0;// Ignore Spacesfor ( ; str[i] == ' ' && str[i] != 0; ++ i ) { }// Process Sign Bitif ( str[i] == '+' || str[i] == '-' ) {isPositive = (str[i] == '+');++ i;}// Convert to Integerfor ( ; isDigit(str[i]) && str[i] != 0; ++ i ) {char digit = str[i] - '0';int previousResult = n;n = n * 10 + digit;// If it's Overflowif ( n / 10 != previousResult ) {if ( isPositive ) {return INT_MAX;} else {return INT_MIN;}}}return ( isPositive ? n : -n );}
private:bool isDigit(char digit) {return (digit >= '0' && digit <= '9');}
};

轉載于:https://www.cnblogs.com/blfshiye/p/5114200.html

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

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

相關文章

html如何設置滾動動畫,JavaScript 實現頁面滾動動畫

在做前端 UI 效果時&#xff0c;讓元素根據滾動位置實現動畫效果是一個非常流行的設計&#xff0c;通常我們會使用第三方插件或庫來實現。在本教程中&#xff0c;我將教大家使用純 JavaScript 和 CSS 來實現。先預覽一下實現的效果&#xff1a;我們使用 CSS 來實現動畫&#xf…

oraclenbsp;一個稍微大點數據庫

公司有個水電收費系統,在包頭試運行, 給了我一個dmp讓熟悉一下業務. dmp是壓縮過的.80多兆好像.解壓下300多兆好像.導入, 有幾個表是50萬行的,幾個30萬左右,200多個表(沒數).很多表是0行,設計居民用戶單位用戶一堆一堆的.用戶有幾萬個. 問題是這樣的: 收費系統每個月要結算一個…

絕非玩笑!人工智能或開創黑客新時代

專家稱&#xff0c;未來的網絡戰爭可能是機器對機器&#xff0c;這可能需要幾年甚至幾十年時間&#xff0c;但黑客并不一定總是人類。人工智能(AI)是可徹底改變網絡安全的技術&#xff0c;而它有一天可能成為最終的攻擊工具。 今年8月由美國國防部先進項目研究局(DARPA)贊助的C…

redis 筆記06 發布與訂閱、事務、慢查詢日志、監視器

發布與訂閱 1. 服務器狀態在pubsub_channels字典保存了所有頻道的訂閱關系&#xff1a;SUBSCRIBE命令負責將客戶端和被訂閱的頻道關聯到這個字典里面&#xff0c;而UNSUBSCRIBE命令則負責 解除客戶端和被退訂頻道之間的關聯。 2. 服務器狀態在pubsub_patterns鏈表保存了所有模式…

html中文段落,HTML 段落-JavaScript中文網-JavaScript教程資源分享門戶

HTML 可以將文檔分割為若干段落。HTML 段落段落是通過 標簽定義的。實例這是一個段落 這是另一個段落嘗試一下 注意&#xff1a;瀏覽器會自動地在段落的前后添加空行。( 是塊級元素)不要忘記結束標簽即使忘了使用結束標簽&#xff0c;大多數瀏覽器也會正確地將 HTML 顯示出來&a…

自學python系列14:映像,集合類型-集合類型

集合類型1.1如何創建集合類型和給集合賦值1.1.1 如何創建集合類型和給集合賦值集合的工廠方法set()和frozenset()>>> sset(abc)>>> sset([a, c, b])>>> tfrozenset(abc)>>> tfrozenset([a, c, b])len()計算的是集合的字母的個數1.1.2如何訪…

觀點:我們為什么需要威脅情報?

最近被談論的異常火熱的一個術語就是威脅情報&#xff0c;那么威脅情報到底是什么意思&#xff0c;它是一種什么概念或者機制呢?本文中我們就來親密接觸一下威脅情報&#xff0c;并了解它所具有的功能&#xff0c;然后給出幾個威脅情報的最佳實踐示例&#xff0c;最后分析威脅…

vijos 1942 [AH 2005] 小島

描述 西伯利亞北部的寒地&#xff0c;坐落著由 N 個小島組成的島嶼群&#xff0c;我們把這些小島依次編號為 1 到 N 。 起初&#xff0c;島嶼之間沒有任何的航線。后來隨著交通的發展&#xff0c;逐漸出現了一些連通兩座小島的航線。例如增加一條在 u 號小島與 v 號小島之間的航…

聊城大學計算機應用基礎函授,聊城大學試題計算機應用基礎試題

姓名 年級專業層次 教學單位密封線 第1頁 共3頁聊城大學《計算機應用基礎》函授試題一、判斷題(共10題&#xff0c;每題2分&#xff0c;共20分)1、信息按狀態劃分可以劃分為動態信息和靜態信息。( √ )2、操作系統不具有通用性。( )3、在Windows XP環境中&#xff0c;整個顯示…

Struts2中 Path (getContextPath與basePath)

struts2中的路徑問題是根據action的路徑而不是jsp路徑來確定&#xff0c;所以盡量不要使用相對路徑。 雖然可以用redirect方式解決&#xff0c;但redirect方式并非必要。解決辦法非常簡單&#xff0c;統一使用絕對路徑。&#xff08;在jsp中用request.getContextpath方式來拿到…

(七)SpringBoot+SpringCloud —— 集成斷路器

2019獨角獸企業重金招聘Python工程師標準>>> 斷路器簡介 在一個項目中&#xff0c;系統可能被拆分成多個服務&#xff0c;例如用戶、訂單和庫存等。 這里存在這服務調用服務的情況&#xff0c;例如&#xff0c;客戶端調用訂單服務&#xff0c;訂單服務又調用庫存服務…

Java反射機制的使用方法

Java的反射機制同意你在程序執行的過程中獲取類定義的細節。有時候在程序執行的時候才得知要調用哪個方法&#xff0c;這時候反射機制就派上用場了。獲取類 類的獲取方法有下面幾種&#xff1a;forName()。通過Class.forName()獲取與字符串向相應的類。比方\lstinline{Class.fo…

銀行計算機設備日常檢查表,[計算機]201154安全檢查表.doc

[計算機]201154安全檢查表土建基礎框架施工檢查表編號&#xff1a;2011-03-01-11工程名稱鑄造車間檢查時間2011 年 月 日檢查部位基礎施工檢 查 人檢 查結 論百分制折合分數&#xff1a;需要整改共 條。受檢單位河南周口受檢責任人檢 查 內 容檢查項目檢查內容和安全文明施工要…

我為什么要寫FansUnion個人官網-BriefCMS-電子商務malling等系統

不少朋友一直關注我最近幾個月&#xff0c;已經做的和正在做的項目&#xff0c;比如個人官網、BriefCMS、電子上午malling等系統。但是呢&#xff0c;部分朋友比較好奇&#xff0c;為啥要去寫。他們比較疑惑的是&#xff0c;市面上已經有很多類似的系統了&#xff0c;甚至有部分…

Node開發文件上傳系統及向七牛云存儲和亞馬遜AWS S3的文件上傳

背景起&#xff0c;有奏樂&#xff1a; 有偉人曰&#xff1a;學習技能的最好途徑莫過于理論與實踐相結合。 初學Node這貨時&#xff0c;每每讀教程必會Fall asleep。 當真要開發系統時&#xff0c;頓覺精神百倍&#xff0c;即便踩坑無數也不失斗志。 因為同團隊的小伙伴們都在辛…

計算機學業水平考試及格,信息技術學業水平考試表格部分試題(帶答案)

第三章表格信息的加工與表達復習學案【學習目標】1.熟練使用excel加工表格信息&#xff0c;理解用圖表來表現信息的特點與意義&#xff0c;2.能根據表格數據關系選擇合適的圖表類型表達意圖。【考點】1.表格中常用的函數及其求值方法&#xff1b;2.根據數據選擇合適的圖表類型&…

Ok6410掛載NFS

虛擬機&#xff1a; apt-get install portmap apt-get install nfs-kernel-server mkdir /nfs/root/mNFS chmod 777 /nfs chmod 777 /nfs/root vi /etc/exports 添加&#xff1a;/nfs/root *(rw,sync,no_root_squash) 開發板&#xff1a; mount -t nfs 192.168.0.12…

云計算:容器技術變革云計算,SaaS帶動CaaS市場

報告摘要&#xff1a; 1、容器技術增速驚人&#xff0c;市場認可度提高 虛擬化是云計算的重要基礎&#xff0c;Docker定義了一套容器從構建到執行的標準化體系&#xff0c;改變了傳統的虛擬化技術&#xff0c;深度影響了云計算領域。 隨著谷歌、亞馬遜、微軟等云計算廠商紛紛加…

Jan 12 - Delete Node in a Linked List; Data Structure; Linked List; Pointer;

代碼&#xff1a; /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val x; }* }*/ public class Solution {public void deleteNode(ListNode node) {if(node null) return;while(node.next ! …

三年級神奇電子計算機教案,人教版小學三年級下冊信息技術教案

人教版小學三年級下冊信息技術教案 人教版小學信息技術教案第一課 神奇的信息世界教學目的&#xff1a;通過學習使學生更充分地了解信息技術在生活中的應用。教學內容&#xff1a;觀看“神奇的信息世界”光碟教學準備&#xff1a;1、調試每臺計算機 2、打開計算機并由教師機控制…