題目描述
將一個字符串轉(zhuǎn)換成一個整數(shù)(實現(xiàn)Integer.valueOf(string)的功能,但是string不符合數(shù)字要求時返回0),要求不能使用字符串轉(zhuǎn)換整數(shù)的庫函數(shù)。 數(shù)值為0或者字符串不是一個合法的數(shù)值則返回0。
解決方法
重點考察邊界條件:
- 數(shù)據(jù)上下溢出
- 空字符串
- 只有正負號
- 有無正負號
- 錯誤字符串的輸出
public class Solution
{
public static int StrToInt(String str)
{
if (str.equals("") || str.length() == 0)
return 0;
char[] a = str.toCharArray();
int negative = 0;
if (a[0] == '-')
negative = 1;
long sum = 0;
for (int i = negative; i < a.length; i++)
{
if (a[i] == '+')
continue;
if (a[i] < 48 || a[i] > 57)
return 0;
sum = sum * 10 + a[i] - 48;
if((negative==0 && sum>Integer.MAX_VALUE) || (negative==1&&(sum*negative<Integer.MIN_VALUE))){
return 0;
}
}
return negative == 0 ? (int)sum : (int)sum * -1;
}
public static void main(String[] args) {
System.out.println(StrToInt("-2147483648"));
}
}
復(fù)雜度分析:
- 時間復(fù)雜度:O(n)。
- 空間復(fù)雜度:O(n)。

哎呀,如果我的名片丟了。微信搜索“全菜工程師小輝”,依然可以找到我