經典演算法 字串轉換成整數

2021-09-26 03:36:49 字數 1328 閱讀 8208

本系列為《程式設計之法:面試和演算法心得》的讀書筆記。

演算法1.3:字串轉換成整數
思路分析:當掃瞄字串的第乙個字元「1「時,由於是第一位,故得到數字1;繼續向後掃瞄到第二個字元」2「,之前已經得到數字1,在其後新增乙個數字2,得到數字12,相當於前面的數字擴大了10倍然後加上剛掃瞄到的數字2,即:1×10+2=12。同理,掃瞄到第三個字元」3「,即可得到最終整數123為所求。故而,其基本思路就是:從左至右掃瞄字串,把之前得到的數字乘以10,再加上當前字元表示的數字。 但是,在處理過程中,需要考慮以下問題:

1)空指標的輸入:輸入的是指標,在訪問空指標時程式會崩潰,需要提前判空;

2)正負符號:整數不僅包括數字,還有可能包括以「+」或「-」開頭表示正負整數,遇到負號「-」需要做轉換;

3)非法字元:輸入的字串中可能有不是數字的字元(如誤操作其他字元),需要預先判斷,碰到非法字元程式應停止轉換;

4)整型溢位:輸入的數字是以字串的形式輸入,若輸入乙個很長的字串可能導致溢位。

// 演算法1.3:字串轉成整數

intstrtoint

(const

char

* str)

// 處理空格

while

(isspace

(*str)

)// 處理正負

int sign =1;

if(*str ==

'+'||

*str ==

'-')

str++;}

while

(isdigit

(*str)

)else

if(sign <0&&

(n >

(unsigned

)min_int/

10||

(n ==

(unsigned

)min_int/

10&& c >

(unsigned

)min_int%10)

))n = n *

10+ c;

str++;}

return sign >

0? n:

-n;}

演算法分析:此演算法難點在於處理資料溢位,其時間複雜度為 o(n

)o(n)

o(n)

實現stringdouble的轉換。

字串轉換成整數

題目詳情 輸入乙個表示整數的字串,把該字串轉換成整數並輸出,例如輸入字串 345 則輸出整數345。請完成函式strtoint,實現字串轉換成整數的功能。友情提醒 提交 之前,請複查下你的程式,比如當給的字串是如左邊所示的時候,有考慮到麼?當然,它們各自對應的正確輸出如右邊所示 假定你是在32位系統...

字串轉換成整數

輸入乙個表示整數的字串,把該字串轉換成整數並輸出,例如輸入字串 345 則輸出整數345。需要考慮的問題 1.由於整數可能不僅僅之含有數字,還有可能以 或者 開頭,表示整數的正負。2.處理非法輸入。在使用指標之前判斷這個指標是不是為空。3.輸入的字串中可能含有不是數字的字元。4.最後乙個需要考慮的問...

字串轉換成整數

字串轉換成整數。不廢話,貼 在網上找到了大神july的帖子,發現即使演算法非常細膩,但是我自己在電腦上執行卻不行,所以自己改了一下,應該沒有問題了。include include include using namespace std int strtoint const char str if i...