把字符串轉換成整數

 

題目:將一個字符串轉換成一個整數(實現Integer.valueOf(string)的功能,但是string不符合數字要求時返回0),要求不能使用字符串轉換整數的庫函數。 數值爲0或者字符串不是一個合法的數值則返回0。

輸入輸出描述:輸入一個字符串,包括數字字母符號,可以爲空。如果是合法的數值表達則返回該數字,否則返回0

輸入:+2147483647     輸入:2147483647
輸出:1a33            輸出:0

分析:需要考慮:(1)輸入空串(2)邊界條件(上下溢出)(3)正負號(4)前面的空格需要跳過(5)不合法的輸入,有時候還要區分輸出0到底是不合法的數字串導致還是空串導致,這時候可以用一個全局的標誌位來處理

int StrToInt(string str) {
        //字符串->整數
        //數值爲0,或者字符串不合法輸出0
        int len=str.size();
        if(len==0)
            return 0;
        
        int flag=1;//用來標記正負的
        
        int i=0;
        if(str[0]=='+')
        {
            i++;
        }
        else if(str[i]=='-')
        {
            flag=-1;//表示是負數
            i++;
        }
        
        int sum=0;
        while(str[i]!='\0')
        {
            while(str[i]==' ')//前面的跳過空格
            {
                i++;
            }
            if(isdigit(str[i]))//是數字
            {
                sum=sum*10+str[i++]-'0';
                //邊界考慮
                if(sum*flag>INT_MAX)
                {
                    return INT_MAX;
                }
                if(sum*flag<INT_MIN)
                {
                    return INT_MIN;
                }
            }
            else//不合法的字符串
            {
                sum=0;
                break;
            }
        }
        return sum*flag;//注意乘上這個正負標誌
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章