LeetCode-第八題:String to Integer

題目

leetCode.png

分析

完整代碼

    #include <stdio.h>
    #include<string.h>
    #include<limits.h>
    int myAtoi(char* str);
    int main()
    {
        
           char str[12]="2147483648";
        printf("int_max=%d,%d\n",INT_MAX,myAtoi(str)); 
           return 0;
    }
    
    int myAtoi(char* str) 
    {
        if(str==NULL)
        {
            return 0;
        }
        long long int total=0;
        int ispositive=1;//判斷是否是負(fù)數(shù) 
        int i;
        for(i=0;i<strlen(str);i++)
        {
            if(isspace(str[i]))//跳過空格 
            {
                continue;
            }
            else//字符開始 
            {
                if(str[i]=='-')//判斷正負(fù) 
                {
                    ispositive=0-1;
                    i++;
                }
                else if(str[i]=='+')
                {
                    i++;    
                }
                int j; 
                for(j=i;j<strlen(str);j++)
                {
                    switch(str[j])
                    {
                        case '0':
                        {
                            total=total*10+0;
                            break;  
                        }
                        case '1':
                        {
                            total=total*10+1;
                            break;      
                        }
                        case '2':
                        {
                            total=total*10+2;
                            break;
                        }
                        case '3':
                        {
                            total=total*10+3;
                            break;
                        }
                        case '4':
                        {
                            total=total*10+4;
                            break;
                        }
                        case '5':
                        {
                            total=total*10+5;
                            break;
                        }
                        case '6':
                        {
                            total=total*10+6;
                            break;      
                        }
                        case '7':
                        {
                            total=total*10+7;
                            break;
                        }
                        case '8':
                        {
                            total=total*10+8;
                            break;
                        }
                        case '9':
                        {
                            total=total*10+9;
                            break;
                        }
                        default:
                        {
                            return total*ispositive;
                            break;
                        }   
                    }
                    if(ispositive==1)//判斷是否越界
                    {
                        if(total>INT_MAX)
                        {
                            return INT_MAX;
                        }
                    }
                    else
                    {
                        if(ispositive*total<INT_MIN)
                        {
                            return INT_MIN;
                        }
                    }
                }
                break;
            }
        }
        return total*ispositive;
    }

后記

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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