49、劍指offer--把字符串轉換成整數

題目描述
將一個字符串轉換成一個整數,要求不能使用字符串轉換整數的庫函數。 數值為0或者字符串不是一個合法的數值則返回0?
輸入描述:
輸入一個字符串,包括數字字母符號,可以為空
輸出描述:
如果是合法的數值表達則返回該數字,否則返回0
輸入例子:
+2147483647 ??? 1a33
輸出例子:
2147483647 ??? 0
解題思路:本題需要考慮幾個方面
1、如果非法輸入,除了結果輸出0,使用全局g_nStatus來標識(進入函數初始化為不合法,最后合法再置為合法)
2、正負號處理
3、數值越界
 1 #include <iostream>
 2 using namespace std;
 3 class Solution {
 4 public:
 5     enum status {kValid=0,kInvalid};
 6     int g_nStatus = kValid;
 7     int StrToInt(string str) {
 8         g_nStatus = kInvalid;
 9         long long num = 0;
10         const char *cstr = str.c_str();
11         if(cstr != NULL && *cstr != '\0')
12         {
13             int minus = 1;//符號
14             if(*cstr == '-')
15             {
16                 minus = -1;
17                 cstr++;
18             }
19             else if(*cstr == '+')
20             {
21                 cstr++;
22             }
23             while(*cstr != '\0')//記得是*cstr
24             {
25                 if(*cstr >= '0' && *cstr <= '9')
26                 {
27                     num = num*10 + *cstr-'0';
28                     cstr++;
29                     //數字越界
30                     if(((minus > 0) && (num > 0x7FFFFFFF)) || ((minus <0) && (num< (signed int)0x80000000)))//記住加signed int
31                     {
32  
33                         //g_nStatus = kInvalid;
34                         num = 0;
35                         break;
36                     }
37                 }
38                 else
39                 {
40                     //g_nStatus = kInvalid;
41                     num = 0;
42                     break;
43                 }
44             }
45             if(*cstr == '\0')
46             {
47                 g_nStatus = kValid;
48                 num = num*minus;
49             }
50         }
51         return (int)num;
52     }
53  
54 };
55 int main()
56 {
57     string s = "-123";
58     Solution a;
59     int res = a.StrToInt(s);
60     cout<<res<<endl;
61     return 0;
62 }

?

轉載于:https://www.cnblogs.com/qqky/p/7082575.html

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

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

相關文章

Git丟棄修改

Git是如何跟蹤修改的&#xff1f;我們之前修改文件后都用到了兩個命令git add <file>、git commit&#xff0c;其實在Git中&#xff0c;每次修改后&#xff0c;如果不add到暫存區&#xff0c;那就不會加入到commit。 查看一下文件內容&#xff1a; 在其中添加一行記錄…

隱藏界面沒有必要應用場景

轉載于:https://www.cnblogs.com/zengsf/p/8366572.html

mynt product model: D1000-IR-120標定相機和IMU外參之二

1. 在之一中使用kalibr標定mynt相機和內置imu的外參數,使用的是720p,30fps的雙目圖像和200hz的imu數據,標定結果誤差比較大,這一次我們改用480p,60hz的雙目圖像和200hz的imu數據進行標定,需要在mynt_sdk中的mynteye.launch中進行如下修改. 默認獲取圖像的2560x720,30fps&#…

AODp

一、AOP是OOP的延續&#xff0c;是&#xff08;Aspect Oriented Programming&#xff09;的縮寫&#xff0c;意思是面向切面編程。 AOP&#xff08;Aspect Orient Programming&#xff09;&#xff0c;作為面向對象編程的一種補充&#xff0c;廣泛應用于處理一些具有橫切性質的…

[洛谷P4174][NOI2006]最大獲利

題目大意&#xff1a;同Petya and Graph&#xff0c;數據范圍改成$n\leqslant5\times10^3,m\leqslant5\times10^4$ 題解&#xff1a;同上 卡點&#xff1a;無 C Code&#xff1a; #include <algorithm> #include <cstdio> #define maxn 5010 #define maxm 50010 co…

使用ros發布UVC相機和串口IMU數據

&#xff11;&#xff0e;目的&#xff1a;為了可以標定普通USB相機和固定在相機上的外置IMU的外參,我希望通過ROS獲取更高分辨率和更高頻率的圖像數據,并且可以將圖像和imu的topic發布出來,直接使用rosbag record錄制話題數據,寫入bag文件,這樣獲得的bag文件直接可以用于相機和…

API自動化測試利器——Postman

自從開始做API開發之后&#xff0c;我就在尋找合適的API測試工具。一開始不是很想用Chrome擴展&#xff0c;用的WizTools的工具&#xff0c;后來試過一次Postman之后就停不下來了&#xff0c;還買了付費的Jetpacks。推出Team Sync Beta之后我又把這個工具推廣給團隊&#xff0c…

gcc,cc,g++,CC的區別

***gcc是C編譯器&#xff1b; ***g是C編譯器&#xff1b; ***linux下cc一般是一個符號連接&#xff0c;指向gcc ***gcc說明 1.gcc編譯常用格式&#xff1a; gcc C源文件 -o 目標文件 或 gcc -o 目標文件 C源文件 或 gcc C源文件 最后一種情況產生的目標文件默認為a.out 2.gcc…

云原生實踐之 RSocket 從入門到落地:Servlet vs RSocket

技術實踐的作用在于&#xff1a;除了用于構建業務&#xff0c;也是為了驗證某項技術或框架是否值得大規模推廣。 本期開始&#xff0c;我們推出《RSocket 從入門到落地》系列文章&#xff0c;通過實例和對比來介紹RSocket。主要圍繞RSocket如何實現Polyglot RPC、Service Regis…

制作.sens數據集跑通bundlefusion

1. 主要參考這篇博客實現 https://blog.csdn.net/Wuzebiao2016/article/details/94426905 2. 首先就是將自己采集的RGBD圖像的保存格式向Bundlefusion需要的格式對齊&#xff0c;如彩色圖的命名格式是frame-000000.color.png&#xff0c;深度圖的命名規則是frame-000000.depth…

用ul li實現邊框重合并附帶鼠標經過效果

邊框重合這個效果并不難&#xff0c;只是我們沒有真正的動手做過而已&#xff0c;下面讓我們來談談用ul li如何實現邊框重合&#xff0c;并附帶鼠標經過效果 1 <!DOCTYPE html>2 <html lang"zh-CN">3 4 <head>5 <title></title>6 …

hive 中窗口函數row_number,rank,dense_ran,ntile分析函數的用法

https://www.cnblogs.com/wujin/p/6051768.html轉載于:https://www.cnblogs.com/0xcafedaddy/p/8385476.html

python之moviepy庫的安裝與使用

目的&#xff1a;因為需要保存一個大大的.mp4視頻&#xff0c;以防過程中設備出現異常導致整個長長的視頻無法正常保存&#xff0c;所以采用分段保存視頻的方式&#xff0c;每500幀保存一段&#xff0c;然后再將視頻合到一起&#xff0e;最近剛開始學習python,發現python真的很…

oracle 之 安裝后pl/sql登錄報ora-12154

這個問題一開始困擾了很久。 查的資料是復制一小段代碼到tnsnames.ora中 SID名 (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST localhost)(PORT 1522)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME SID名) ) 注意SID名前面不能有任何其他字符&…

如何避免表單重復提交

客戶端方案 禁掉提交按鈕。 表單提交后使用Javascript使提交按鈕disable。這種方法防止心急的用戶多次點擊按鈕。但有個問題&#xff0c;如果客戶端把Javascript給禁止掉&#xff0c;這種方法就無效了。 使用Post/Redirect/Get模式 在提交后執行頁面重定向&#xff0c;這就是所…

十六進制轉八進制

【問題描述】 問題描述 給定n個十六進制正整數&#xff0c;輸出它們對應的八進制數。 輸入格式 輸入的第一行為一個正整數n &#xff08;1<n<10&#xff09;。 接下來n行&#xff0c;每行一個由0~9、大寫字母A~F組成的字符串&#xff0c;表示要轉換的十六進制正整數&…

使用iai_kinect2標定kinectV2相機

實驗背景&#xff1a;因為需要制作bundlefusion需要的數據集&#xff0c;所以需要使用kinectV2相機獲取rgbd圖像&#xff0c;年前的時候在我的筆記本上安裝了libfreenect2庫和iai_kinect2&#xff0c;標定過一次kinecv2相機&#xff0c;然后使用kinectv2相機實時獲取的圖像實現…

tar只解壓tar包中某個文件

如果tar包很大&#xff0c;而只想解壓出其中某個文件。方法如下&#xff1a; 只想解壓出Redis-1.972.tar 中的Changes文件&#xff0c;來查看有哪些更改。 [rootuplooking]# tar -tf Redis-1.972.tar Redis-1.972…

扎克伯格的中文夜:想要成功就不能放棄

10月23日消息。雖然并不太流暢。昨天馬克?扎克伯格依舊用中文與清華經管學院主持人完畢了一場對話&#xff1b;在對話中&#xff0c;這位Facebook創始人兼首席運行官闡述了自己學習中文的原因&#xff1a;想要和太太&#xff08;普里西拉?陳&#xff09;的家人交流&#xff1…

python將ros下bag文件的所有topic解析為csv格式

背景&#xff1a;最近在制作kimera的數據集&#xff0c;尤其是運行semantic模塊所需要的bag文件中有很多topic&#xff0c;但是很多不知道topic中裝的是什么數據&#xff0c;及其格式&#xff0c;所以我就想著怎么可以將bag中的topic都解析數來&#xff0c;這樣就能知道bag中都…