本文首發(fā)于我的個人博客:尾尾部落
題目描述
將一個字符串轉換成一個整數(shù)(實現(xiàn)Integer.valueOf(string)的功能,但是string不符合數(shù)字要求時返回0),要求不能使用字符串轉換整數(shù)的庫函數(shù)。 數(shù)值為0或者字符串不是一個合法的數(shù)值則返回0。
解題思路
常規(guī)思路,先判斷第一位是不是符號位,如果有符號,有flag 做標記。
遍歷字符串中的每個字符,如果存在非數(shù)字的字符,直接返回 0,否則,用當前字符減去'0'得到當前的數(shù)字,再進行運算。
參考代碼
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;
}
}