天天看點

[劍指offer] 把字元串轉換成整數

本文首發于我的個人部落格: 尾尾部落

題目描述

将一個字元串轉換成一個整數(實作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;
    }
}
           

繼續閱讀