把字符串轉換成整數


將一個字符串轉換成一個整數,要求不能使用字符串轉換整數的庫函數。 數值爲 0 或者字符串不是一個合法的數值則返回 0java


解題思路

字符 ‘0’ 的 ASCII 值是 48,‘1’ 到 '9' 則是從 48 起始依次遞增,所以解題的關鍵在於:函數

  • 判斷有沒有 '+'、'-' 等符號位,若是沒有符號位默認爲正整數
  • 依次取字符串中的每個字符,判斷是否在 '1' 到 '9' 的範圍以內
public class Solution {
    public int StrToInt(String str) {
        if(str == null || str.length() == 0) {
            return 0;
        } else if(str.length() == 1 && (str.charAt(0) == '+' || str.charAt(0) == '-')) {
            return 0;
        }
        int result = 0;
        boolean flag = true;
        int j = 1;
        if(str.charAt(0) == '+') {
            str = str.substring(1, str.length());
        }
        if(str.charAt(0) == '-') {
            flag = false;
            str = str.substring(1, str.length());
        }
        for(int i = str.length() - 1; i >= 0; i--) {
            int temp = str.charAt(i) - 48;
            if(temp < 0 || temp > 9) {
                return 0;
            }
            result += temp * j;
            j *= 10;
        }
        if(flag == false) {
            return -result;
        }
        return result;
    }
}
相關文章
相關標籤/搜索