題目描述
將一個字符串轉換成一個整數(實現Integer.valueOf(string)的功能,但是string不符合數字要求時返回0),要求不能使用字符串轉換整數的庫函數。 數值為0或者字符串不是一個合法的數值則返回0。
輸入描述:
輸入一個字符串,包括數字字母符號,可以為空
輸出描述:
如果是合法的數值表達則返回該數字,否則返回0
示例1
輸入
+2147483647
1a33
輸出
2147483647
0
這道題我感覺說的很模糊,不是很清楚如果輸入"12+23"或"5e2"這種形式的字符串應該輸出什么。所以只是簡單的實現
public int StrToInt(String str) {
if (str.equals("") || str.length() == 0)
return 0;
char[] a = str.toCharArray();
int fuhao = 0;
if (a[0] == '-')
fuhao = 1;
int sum = 0;
for (int i = fuhao; i < a.length; i++)
{
if (a[i] == '+')
continue;
if (a[i] < 48 || a[i] > 57)
return 0;
//123 可以 是1*10*10+2*10+3
sum = sum * 10 + a[i] - 48;
}
return fuhao == 0 ? sum : sum * -1;
}