String to Integer (atoi)

来源:互联网 发布:小区网络拓扑结构图 编辑:程序博客网 时间:2024/05/29 16:34

Implement atoi to convert a string to an integer.

各种意外情况考虑进去是这道题唯一的难点,当然也可以逐步完善,主要需要考虑的是:
1 . 转换数字是否超过int类型范围INT_MAX (2147483647) or INT_MIN (-2147483648) ;我在程序中的判定方法是if(2147483647/10-a<0|| 2147483647-a*10’ <’add ) 在这没关注正负.

2.如果错误输入时的情况,在Leetcode中如果遇见错误输入就返回错误输入前的已得到的结果.
在这道题想了半天~当时还把浮点数输入考虑进去了,结果发现不需要哎.
代码如下:

int myAtoi(char* str) {    int a =0;        int add ;    int mark =1;     char *ptr =str;    for(;*ptr==' ';ptr++)            ;        switch(*ptr)        {           case '+':               mark=1;               ptr++;              break;         case '-':              mark=-1;             ptr++;       }           for( ; *ptr!='\0';ptr++ )    {       switch(*ptr)            {       case'+':                            return(a*mark);                   case '-':                            return(a*mark);                                       break;                case 'e':                          return(a*mark);                            break;              case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':        add = (*ptr -'0');        if(2147483647/10-a<0|| 2147483647-a*10 <add  )                   if(mark >0)                    return(2147483647 );                        else                        return (-2147483648);                a =a*10+add;                break;            default:                  return(mark*a);                   }    }    return(mark*a);}
0 0
原创粉丝点击