码迷,mamicode.com
首页 > 其他好文 > 详细

实现atoi函数

时间:2014-12-08 00:36:59      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   for   on   div   

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函数

标签:style   blog   io   ar   color   sp   for   on   div   

原文地址:http://www.cnblogs.com/hubavyn/p/4150106.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!