劍指Offer 49 把字符串轉換成整數

題目描述

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

思路

  1. 其實這道題就是要考慮周全就行,首先是字符串的鑑別啊,“+”和“-”的判別,然後我就寫多了。。。。

代碼

    static public int StrToInt(String str) {
        if (str==null||str.length()==0)                 //null和空字符串檢驗
            return 0;
        char [] a = str.toCharArray();                  //消耗點空間唄
        if (a[a.length-1]<'0'||a[a.length-1]>'9')       //檢查最後一個字符是否不是數字
            return 0;
        boolean flag = true;                            //加法還是減法
        int number=0;                                   //假髮或者減法第二項
        int result = 0;                                 //結果
        for (int i = 0; i < a.length;i++) {             //寫的難看的for循環

            while (a[i]!='+'&&a[i]!='-') {              //計算第二項
                if (a[i]>'9'||((a[i]<'0')&&(a[i]!='+'||a[i]!='-')))//檢測
                    return 0;
                number = number * 10 + a[i] - '0';
                i++;
                if (i>a.length-1)
                    break;
            }
            if (i>=a.length-1)                          //到尾了
            {
                if (flag)                               //flag用於判斷前一個符號是+還是-
                    result += number;
                else if (flag==false)
                    result-=number;
                break;
            }
            if (i<a.length&&a[i]=='+')
            {
                if (flag)
                    result += number;
                else if (flag==false)
                    result-=number;
                flag = true;
                number = 0;

            }
            if (i<a.length&&a[i]=='-')
            {
                if (flag)
                    result += number;
                else if (flag==false)
                    result-=number;
                flag = false;
                number = 0;
            }
        }
        return result;
    }

收穫

  1. 永遠不要小看題目
  2. 永遠不要小看面試官,人家比你溜得多;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章