劍指Offer 把字串轉換成整數

2021-10-03 21:31:24 字數 1316 閱讀 8241

將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。 數值為0或者字串不是乙個合法的數值則返回0

輸入描述:

輸入乙個字串,包括數字字母符號,可以為空

輸出描述:

如果是合法的數值表達則返回該數字,否則返回0

個人感覺這道題的考點在於型別的範圍,

注意在定義返回結果的變數時先定義為double型別,或者unsigned int 整形。最後的強制轉換int 可有可無。

現在再來說思路:

1-判斷該字串第乙個字元是+/-,+號的話無所謂不管,若是-號的話先置tag=1;

2-除過第乙個字元可以不是0到9的字元之外其他的數字必須在0-9範圍內。對於字元變整形是 『9』-『0』=9;

3-若在0-9之內 則給result=result+(str[i]-『0』)* 10^(len-1-i)

4-若result在整型範圍內,根據tag 等於1/0判斷是正數還是負數。

class

solution

//判斷str[i]-'0'是否是正規數字

if(str[i]

-'0'

>=

0&& str[i]

-'0'

<10)

else

return0;

}if((result >

pow(2,

31)-1

&&tag==0)

||(result>

pow(2,

31)&&tag==1)

)//判斷是否溢位

return0;

return result = tag ==1?

-result : result;

//判斷輸出正負數}}

;

這塊稍微給點優化:將判斷是否溢位放在迴圈裡面,當第乙個數字溢位後後面的不再進行計算**如下:

class

solution

//判斷str[i]-'0'是否是正規數字

if(str[i]

-'0'

>=

0&& str[i]

-'0'

<10)

else

return0;

}return

(int

)result = tag ==1?

-result : result;

//判斷輸出正負數}}

;

劍指offer 把字串轉換成整數

字串轉成整數的核心 很簡單,但是需要考慮的各種情況很多。1 首位 的判斷。2 在 的溢位判斷。3 null 空字串的判斷。4 數字後面出現了很多非數字的情況。atoi函式是講前面的數字儲存下來,劍指offer 的 則是返回0。兩種情況都說的通,視情況而定吧。5 開頭出現了很多非數字,中間摻雜著數字的...

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

題目描述 將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。這種題目交代不清楚,也沒啥技巧含量和思考價值,既然出現了,就順帶著做一下吧。code t 把字串轉換成整數 題目描述 將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。date 2015.12.10 20 17 auth...

劍指offer 把字串轉換成整數

輸入描述 輸入乙個字串,包括數字字母符號,可以為空 輸出描述 如果是合法的數值表達則返回該數字,否則返回0 示例1 輸入 2147483647 1a33 輸出 2147483647 0class solution int g status valid int strtoint string str ...