完成字符串到整数的转换

字符串到整数的转换

可以考虑对于原有的atoi的实现,不仅仅需要计算得到数值,对于其中的特殊情况需要进行仔细斟酌,区分,提高程序的鲁棒性。

  1. 首先字符串首字符可以是正负
  2. 首字符是正负的时候,后续必须得有非空的数字字符串,否则返回0,
  3. 其余遇到非数字字符的情况都是判错,返回0。
  4. 对于”0”返回0,为了区分两种0,需要添加一个全局或者传入的区分变量,本文不讨论该种情况,但是需要知道。
  5. 空字符串需要判错。
//将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),
//要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
class Solution {
public:
    int StrToInt(string str) {
        //遇到非法字符,返回0
        //+,— 在开头出现后必须跟随合法数字,否则返回0
        int len=str.size();
        int index=0;
        bool flag=1;    //0表示负,1表示正
        if(str[0]=='+' || str[0]=='-'){
            index++;
            if(len==1)
                return 0;
            flag=(str[0]=='+')?1:0;
        }

        int ret=0;
        for(;index<len;index++){
            if(str[index]<='9' && str[index]>='0')
                ret=ret*10+str[index]-'0';
            else
                return 0;
        }
        return flag?ret:-ret;
    }
};

猜你喜欢

转载自blog.csdn.net/nwpubear/article/details/81485387