實(shí)現(xiàn)atoi這個(gè)函數(shù),將一個(gè)字符串轉(zhuǎn)換為整數(shù)桅狠。如果沒有合法的整數(shù),返回0轿秧。如果整數(shù)超出了32位整數(shù)的范圍中跌,返回INT_MAX(2147483647)如果是正整數(shù),或者INT_MIN(-2147483648)如果是負(fù)整數(shù)菇篡。
樣例
"10" =>10
"-1" => -1
"123123123123123" => 2147483647
"1.0" => 1
代碼
public class Solution {
/*
* @param str: A string
* @return: An integer
*/
public int atoi(String str) {
// Start typing your Java solution below
// DO NOT write main() function
if (str == null) {
return 0;
}
// 去掉字符串首尾的空格
str = str.trim();
if (str.length() == 0) {
return 0;
}
int sign = 1;
int index = 0;
// 判斷字符串中數(shù)字是正數(shù)還是負(fù)數(shù)
if (str.charAt(index) == '+') {
index++;
} else if (str.charAt(index) == '-') {
sign = -1;
index++;
}
long num = 0;
for (; index < str.length(); index++) {
// 字符串內(nèi)部出現(xiàn)非數(shù)字字符
if (str.charAt(index) < '0' || str.charAt(index) > '9') {
break;
}
// 求出字符中數(shù)字的絕對(duì)值
num = num * 10 + (str.charAt(index) - '0');
if (num > Integer.MAX_VALUE ) {
break;
}
}
if (num * sign >= Integer.MAX_VALUE) {
return Integer.MAX_VALUE;
}
if (num * sign <= Integer.MIN_VALUE) {
return Integer.MIN_VALUE;
}
return (int)num * sign;
}
}