剑指Offer之字符串转整数

atoi库函数:用来字符串对整数的转换。

atoi通过一个全局变量来区分字符串是0和字符串为空的返回值都为0的情况,如果是非法输入,返回0并且把这个全局变量设为一个特殊标记,如果输入时“0”,不会设置全局变量。

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

class Solution {
public:
    int StrToInt(string str) {
        int flag=false;
        long long num=0;
        int symbol=1;
        int i=0;
        if(str[0]=='+')
        { symbol=1;
        i=1;
        }
         else if(str[0]=='-')
         {symbol=-1;
          i=1;
         }
     
        while(i<str.size())
        {
            if(str[i]>'0'&&str[i]<'9')
            {
                num=num*10+str[i]-'0';
                i++;
            }
            else
            {
                return 0;
            }
        }
        if(i==str.size())
        {
            flag=true;
           
            if((symbol>0&&num>0x7FFFFFFF)||(symbol<0&&num>0x80000000))
            {  flag=false;
                return 0;
            }
             num=num*symbol;
        }
        return num;
        
    }
};

这道题目本身不算难,但是要考虑各种边界情况:

字符串为空;

有+ -号

出现非数字的字符

溢出(整形范围)

int类型(整数类型)的范围为-2^31 ~ 2^31-1,即-2147483648~2147483647十六进制表示:0x80000000~0x7FFFFFFF

错误标志

阅读更多
个人分类: 小R天天写程序
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭