美文网首页
把字符转换成整数

把字符转换成整数

作者: UAV | 来源:发表于2020-06-20 08:12 被阅读0次

    题目描述

    将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为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;
        }
    };
    

    相关文章

      网友评论

          本文标题:把字符转换成整数

          本文链接:https://www.haomeiwen.com/subject/hwqwxktx.html