程式設計之美 05 字串轉換成整數

2021-07-31 20:47:15 字數 1544 閱讀 6168

[版權說明]

程式設計之美系列演算法題集參考:

左程雲 著《程式設計師**面試指南it名企演算法與資料結構題目最優解》

july 著《程式設計之法面試和演算法心得》

何海濤 著《劍指offer》

微軟程式設計之美小組 著《程式設計之美》

部分題目摘選pat、hdoj、poj以及各大網際網路公司google,bat等麵試題集。

[problem description]

輸入乙個由數字組成的字串,請把它轉換成整數並輸出。不能使用庫函式atoi。

[sample input]

123

[sample output]

123基本解法:這道題原理不難,在這裡就不解釋了。

**如下:

#include

#include

using

namespace

std;

int strtoint(string str);

int main()

int strtoint(string str)

return n;

}

這樣就可以了?面試官在於考察你的寫的函式是否注意到輸入的可能不是由數字組成的字串,是否考慮到+123, -123,1234,這樣的輸入。假設這裡我們把輸入的字串轉換為int型別的整數,如果上溢我們列印最大值。下溢我們就列印最小值,我們知道最大的int型別的整數是0x7fffffff,最小的負數是0x80000000.**功能有所擴張了,考察點主要是在我們考慮到所有的輸入狀況。

**如下:

#include

#include

#include

using namespace std;

#define max_int 0x7fffffff

#define min_int 0x80000000

bool isdigit(string str);

int strtoint(string str);

int main()

bool isdigit(string str)

return

true;

}int strtoint(string str)

int sign = 0, n = 0;;

if(str[0] == '+')

sign = 1;

else

if(str[0] == '-')

sign = -1;

for(int i = 0; i < str.length(); i ++)

else

if(sign < 0 && (n > max_int / 10) || n == max_int / 10 && c > (max_int % 10 + 1))

n = n * 10 + c;

}return sign >= 0 ? n : -n;

}

字串轉換成整數

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

字串轉換成整數

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

字串轉換成整數

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