本系列為《程式設計之法:面試和演算法心得》的讀書筆記。演算法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)
。
實現string
到double
的轉換。
字串轉換成整數
題目詳情 輸入乙個表示整數的字串,把該字串轉換成整數並輸出,例如輸入字串 345 則輸出整數345。請完成函式strtoint,實現字串轉換成整數的功能。友情提醒 提交 之前,請複查下你的程式,比如當給的字串是如左邊所示的時候,有考慮到麼?當然,它們各自對應的正確輸出如右邊所示 假定你是在32位系統...
字串轉換成整數
輸入乙個表示整數的字串,把該字串轉換成整數並輸出,例如輸入字串 345 則輸出整數345。需要考慮的問題 1.由於整數可能不僅僅之含有數字,還有可能以 或者 開頭,表示整數的正負。2.處理非法輸入。在使用指標之前判斷這個指標是不是為空。3.輸入的字串中可能含有不是數字的字元。4.最後乙個需要考慮的問...
字串轉換成整數
字串轉換成整數。不廢話,貼 在網上找到了大神july的帖子,發現即使演算法非常細膩,但是我自己在電腦上執行卻不行,所以自己改了一下,應該沒有問題了。include include include using namespace std int strtoint const char str if i...