劍指 把字串轉換成整數(分析)

2021-10-06 13:07:39 字數 2127 閱讀 7092

1,題目:

2,思路:

**一:

根據題意,有以下四種字元需要考慮:

**二:

第一步,跳過前面若干個空格,如果字串全是空格直接返回

第二步,判斷正負號,如果是正負號,還需要將指標i,跳過一位

第三步,迴圈判斷字元是否在 0~9之間

第四步,如果有負號標記則返回負數。

3,**:

**一:

class

solution

, 2^ - 1],因此需要考慮數字越界問題。而由於題目指出 環境只能儲存 32 位大小的有符號整數 ,因此判斷數字越界時,要始終保持 res 在 int 型別的取值範圍內。

*/char

c = str.

trim()

.tochararray()

;//出掉開頭空格,並轉換成字元陣列

if(c.length ==0)

return0;

int res =0;

int bndry = integer.max_value /10;

//這個是為了防止越界,做的處理

int i =1;

//i表示指向字元陣列的下標位置

int sign =1;

//表示正負數的乙個標誌

if(c[0]

=='-'

) sign =-1

;//表示最後這個數是乙個負數

else

if(c[0]

!='+'

) i =0;

//表示從字元陣列的下標0開始迴圈

for(

int j = i; j < c.length; j++

)return sign *

(int

)res;

}}

**二:

class

solution

int n = str.

length()

;int i =0;

int res =0;

boolean is_negative =

false

;//第一步,跳過前面若干個空格

while

(icharat

(i)==

' ')

//如果字串全是空格直接返回

if(i==n)

//第二步,判斷正負號

if(str.

charat

(i)==

'-')

//如果是正負號,還需要將指標i,跳過一位

if(str.

charat

(i)==

'-'|| str.

charat

(i)==

'+')

//第三步,迴圈判斷字元是否在 0~9之間

while

(icharat

(i)>=

'0'&& str.

charat

(i)<=

'9')

//判斷是否小於 最小32位整數

if(is_negative &&

(-res<

-214748364||(

-res==

-214748364

&& tmp>=8)

))res = res*

10+ tmp;

++i;

}//如果有負號標記則返回負數

if(is_negative)

return res;

}}

劍指 把字串轉換成整數

將乙個字串轉換成乙個整數 實現integer.valueof string 的功能,但是string不符合數字要求時返回0 要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0。public class test4 public static int convertconve...

劍指offer 把字串轉換成整數

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

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

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