劍指offer最優(yōu)解Java版-把字符串轉(zhuǎn)換成整數(shù)

劍指offer專題地址

劍指offer索引地址

題目描述

將一個字符串轉(zhuǎn)換成一個整數(shù)(實現(xiàn)Integer.valueOf(string)的功能,但是string不符合數(shù)字要求時返回0),要求不能使用字符串轉(zhuǎn)換整數(shù)的庫函數(shù)。 數(shù)值為0或者字符串不是一個合法的數(shù)值則返回0。

解決方法

重點考察邊界條件:

  1. 數(shù)據(jù)上下溢出
  2. 空字符串
  3. 只有正負號
  4. 有無正負號
  5. 錯誤字符串的輸出
public class Solution
{
    public static int StrToInt(String str)
    {
        if (str.equals("") || str.length() == 0)
            return 0;
        char[] a = str.toCharArray();
        int negative = 0;
        if (a[0] == '-')
            negative = 1;
        long sum = 0;
        for (int i = negative; i < a.length; i++)
        {
            if (a[i] == '+')
                continue;
            if (a[i] < 48 || a[i] > 57)
                return 0;
            sum = sum * 10 + a[i] - 48;
            if((negative==0 && sum>Integer.MAX_VALUE) || (negative==1&&(sum*negative<Integer.MIN_VALUE))){
                return 0;
            }
        }
        return negative == 0 ? (int)sum : (int)sum * -1;
    }

    public static void main(String[] args) {
        System.out.println(StrToInt("-2147483648"));
    }
}

復(fù)雜度分析:

  • 時間復(fù)雜度:O(n)。
  • 空間復(fù)雜度:O(n)。
哎呀,如果我的名片丟了。微信搜索“全菜工程師小輝”,依然可以找到我
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容