《劍指offer》 49 把字串轉化成整數

2022-03-17 09:50:04 字數 793 閱讀 2711

題目:把字串轉換為整數,也就是實現atoi()。

類似還有itoa(),將整數數轉化為字串,相反的過程。此題雖然簡單,但是就像高考一樣,簡單的題不一定能做對,能做對的不一定能得分。好吧,下面來看看一看應該注意的地方。

易錯點:

1、判斷字串是否為null的情況(這是對字串處理最基本得需要注意的地方)。

2、如何區分字串為null時返回的0還是字元'0'返回的0。

3、'+''-'號也要算合法輸入,但是也得注意只有'+''-'號的情況;

4、除了'+''-'號外,'0'到'9'之外的數字也算非法輸入;

5、考慮溢位的請款,如果字串過長,也就是數字過大後會造成溢位;

也許想的還不夠周全,但是至少的注意以上的這些情況。

具體實現**:

#include

using namespace std;

enum status;

int inputstatue=valid; //1.注意輸入為null;

int strtointcore(const char *strr,bool minus)

{ long long num=0;

while(*strr!='\0')

{ if(*strr>='0' && *strr<='9')//4.輸入的字元在0-9之外;

{ int flag=minus?-1:1;//判斷是正還是負;

num=num*10+flag*(*strr-'0');

if(!minus && num>0x7fffffff || minus && num

劍指offer49 字串轉化為整數

題目本身不難,但需要考慮的非法輸入比較多,所以還是值得學習一下,用來應付各種比較 嚴格的 面試。int strtoint const char str 考慮因素 1.str指標是否為空,str是否為空串 2.正負號輸入 3.整數溢位 若還有其他考慮,還請賜教。bool g invalid input...

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

題目 將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入描述 輸入乙個字串,包括數字字母符號,可以為空 思路 如果有正負號,先處理正負號,再處理判斷是否為合法字元,思路看不懂可以看 附有注釋,請原諒博主我太懶 class solution e...

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

將乙個字串轉換成乙個整數 實現integer.valueof string 的功能,但是string不符合數字要求時返回0 要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0。輸入描述 輸入乙個字串,包括數字字母符號,可以為空 輸出描述 如果是合法的數值表達則返回該數字,否...