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...