题目

String to Integer (atoi)


算法

http://www.cnblogs.com/grandyang/p/4125537.html

http://blog.csdn.net/feliciafay/article/details/17111231

  • 若字符串开头是空格,则跳过所有空格,到第一个非空格字符,否则,返回0

  • 若第一个非空格是+/-号,返回0

  • 第一个不是数字返回0

  • 下一个是数字,则转化为整型,如果接下来不是数字,则返回目前结构

  • 考虑边界,超过了整型的范围,则用边界值替代当前值


代码


class Solution{

public:

    int myAtoi(string str){

        if(str.empty())  return 0;

        int sign=1,base=0,i=0,n=str.size();

        while(i<n && str[i]==' ')  ++i;

        if(str[i]=='+' || str[i]=='-'){

            sign=(str[i+1]=='+')?1:-1;

        }

        while(i<n && str[i]>='0' && str[i]<='0'){

            if(base>INT_MAX/10 || (base==INT_MAX/10 && str[i]-'0'>7)){

                return (sign==1)? INT_MAX:INT_MIN;

            }

            base=10*base+(str[i++]-'0');

        }



        return base*sign;

    }

};

results matching ""

    No results matching ""