美文网首页
LeetCode-第八题:String to Integer

LeetCode-第八题:String to Integer

作者: baixiaoshuai | 来源:发表于2016-10-29 15:36 被阅读0次

    题目

    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;//判断是否是负数 
            int i;
            for(i=0;i<strlen(str);i++)
            {
                if(isspace(str[i]))//跳过空格 
                {
                    continue;
                }
                else//字符开始 
                {
                    if(str[i]=='-')//判断正负 
                    {
                        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;
        }
    

    后记

    相关文章

      网友评论

          本文标题:LeetCode-第八题:String to Integer

          本文链接:https://www.haomeiwen.com/subject/evryuttx.html