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

2021-10-18 02:41:42 字數 1140 閱讀 3288

題目描述

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

class

solution

else

if(str[0]

=='+'

)for

(; idx)return value;}}

};

class

solution

:def

strtoint

(self,

str:

str)

->

int:

str=

str.strip()if

notstr

:return

0 int_max, int_min, bndry =2**

31-1,

-2**31,2

**31

//10

res, i, sign =0,

1,1if

str[0]

=='-'

: sign =-1

elif

str[0]

!='+'

: i =

0for c in

str[i:]:

ifnot

'0'<= c <=

'9':

break

if res > bndry or res == bndry and c >

'7':

return int_max if sign ==

1else int_min

res *=

10 res +=

ord(c)

-ord

('0'

)return sign * res

思路:

數值越界,即大於 2147483647,或小於 -2147483648,通過觀察程式結構,我們發現,每次迴圈時 value 的值都會擴大10倍(乘以10),那麼,我們是否就可以利用 int_max/10 的值來提前一步判斷是否會越界呢?這裡我們以正數的越界為例進行解釋:

JZ49 把字串轉換成整數

將乙個字串轉換成乙個整數 整數是有範圍的 要求 不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入描述 輸入乙個字串,包括數字字母符號,可以為空 返回值描述 如果是合法的數值表達則返回該數字,否則返回0 示例1輸入 輸出 2147483647 2147483647 示例2...

JZ49 把字串轉換成整數

題目描述 將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 題解 1 判斷是否合法。2 判斷第乙個字元是 或是 3 迴圈乘加。public static intstrtoint string str if str.charat i else if...

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

題目描述 將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入描述 輸入乙個字串,包括數字字母符號,可以為空 輸出描述 如果是合法的數值表達則返回該數字,否則返回0 輸入例子 2147483647 1a33 輸出例子 2147483647 0 ...