首页 > 代码库 > 实现atoi函数

实现atoi函数

atoi函数最关键的地方是想好测试用例:

  • 输入为空字符串,输出为0;
  • 输入字符串大小超过INT_MAX输出INT_MAX;
  • 输入字符串大小小于INT_MIN输出INT_MIN;
  • 输入字符串中含有不规则字符,中断atoi, 如"01a4" 输出1;
  • 输入字符串开头和结尾含有空格,忽略空格,如输入"  +01  "输出1;
  • 输入字符串开头除空格以外如果是"+"和"-",视为正确输入。
class Solution {public:    int atoi(const char *str) {        if(strlen(str)==0) return 0;        double result=0;        int j=0;        while(str[j]== )  //忽略字符串首空格        {            j++;        }        int last = strlen(str)-1;        int last_space = 0;        while(str[last]== ) //忽略字符串尾空格        {            last--;            last_space++;        }        if(str[j]==+)        {            for(int i=j+1;i<strlen(str)-last_space;i++)            {                if(str[i]>=0&&str[i]<=9)                {                    result = result*10 + (str[i]-0);                }                //如果遇到非法字符,终止转换                else                {                    break;                }            }            if(result>INT_MAX)            {                return INT_MAX;            }            else            {                return result;            }        }        if(str[j]==-)        {            for(int i=j+1;i<strlen(str)-last_space;i++)            {                if(str[i]>=0&&str[i]<=9)                {                    result = result*10 + (str[i]-0);                }                else                {                    break;                }            }            if(result*(-1) < INT_MIN)            {                return INT_MIN;            }            return result*(-1);        }        for(int i=j;i<strlen(str)-last_space;i++)        {            if(str[i]>=0&&str[i]<=9)            {                result = result*10 + (str[i]-0);            }            else            {                break;            }        }        if(result>INT_MAX)        {            return INT_MAX;        }        if(result*(-1) < INT_MIN)        {            return INT_MIN;        }        return result;    }};

 

实现atoi函数