把字符转换成整数

2020-06-20  本文已影响0人  UAV

题目描述

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

输入描述

输入一个字符串,包括数字字母符号,可以为空

输出描述

如果是合法的数值表达则返回该数字,否则返回0

示例1

输入
+2147483647
1a33
输出
2147483647
0

class Solution {
public:
    int StrToInt(string str) {
        //字符串长度为空则返回0;
        if (str.size() == 0) {
            return 0;
        }
        //标识,用来判断字符串首字母是不是‘+’,‘-’;
        int flag=0;
        if (str[0] == '+') {
            flag = 1;
        }else if (str[0] == '-') {
            flag = -1;
            //如果字符串首字母为字母,则返回0;
        }else if('0' > str[0] || str[0] > '9') {
            return 0;
        }
        /*
        判别起始遍历字符串位置,如果首个字母是‘+’、‘-’,从第1个字母开始遍历,
        否则从第0个字母开始遍历。
        */
        int start=0;
        if (flag == 1 || flag == -1) {
            start = 1;
        }
        //转换后的整形数据
        int result = 0;
        for (int i = start; i <str.size(); i++)
        {   
            if ('0' <= str[i] && str[i] <= '9') {
                //使用字符的ASCALL码计算。
                result = result * 10 + (str[i] - '0');
            }
            else
            {
                return 0;
            }
        }
        //如果首字母为‘+’、‘-’,计算结果*相应标识。
        if (flag != 0) {
            result = flag*result;
        }

        return result;
    }
};
上一篇下一篇

猜你喜欢

热点阅读