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

題目

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

思路

先去掉前後空格,然後對符號位做一下判斷就很簡單了。需要注意的是進行判斷上溢和下溢的情況。
這裏比較坑的一點是java的整型字面值字面值默認是int類型,因此0x80000000等於-2147483648,與long進行比較的時候會類型提升,然而這並不改變其符號位,依然是-2147483648。因此必須要在字面值後面加上一個L顯式地將其定義爲long類型。

代碼:

public class Solution {
    public int StrToInt(String str) {
        str = str.trim();
        if(str.length()==0)
            return 0;
        boolean isNeg = false;
        long value=0;
        for(int i=0;i<str.length();i++){
            char cur = str.charAt(i);
            if(cur>='0'&&cur<='9'){
                value=value*10+cur-'0';
                if(isNeg&&value>0x80000000L||
                !isNeg&&value>0x7fffffffL)
                    return 0;
            }
            else{
                if(i==0&&cur=='+')
                    isNeg=false;
                else if(i==0&&cur=='-')
                    isNeg=true;
                else
                    return 0;
            }
        }
        return (int)(isNeg?-1*value:value);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章