本文首發于我的個人部落格: 尾尾部落
題目描述
将一個字元串轉換成一個整數(實作Integer.valueOf(string)的功能,但是string不符合數字要求時傳回0),要求不能使用字元串轉換整數的庫函數。 數值為0或者字元串不是一個合法的數值則傳回0。
解題思路
正常思路,先判斷第一位是不是符号位,如果有符号,有flag 做标記。
周遊字元串中的每個字元,如果存在非數字的字元,直接傳回 0,否則,用目前字元減去'0'得到目前的數字,再進行運算。
參考代碼
public class Solution {
public int StrToInt(String str) {
if(str.length() == 0)
return 0;
int flag = 0;
if(str.charAt(0) == '+')
flag = 1;
else if(str.charAt(0) == '-')
flag = 2;
int start = flag > 0 ? 1 : 0;
long res = 0;
while(start < str.length()){
if(str.charAt(start) > '9' || str.charAt(start) < '0')
return 0;
res = res * 10 + (str.charAt(start) - '0');
start ++;
}
return flag == 2 ? -(int)res : (int)res;
}
}