【牛客】[编程题] 把字符串转换成整数 C++

1.题目描述

链接:https://www.nowcoder.com/questionTerminal/1277c681251b4372bdef344468e4f26e

将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。
数值为0或者字符串不是一个合法的数值则返回0。

2.思路分析

  1. 设置一个flag来控制最后整数的正负
  2. 循环时注意第一个值,如果是 ‘-’ ,则从第二个开始遍历
  3. 值在字符0到字符9之间的进行操作,否则返回0

3代码实现

class Solution {
public:
    int StrToInt(string str) {
        // ret最终返回值
        int ret = 0;
        // flag 控制正负
        int flag = 1;
        // 字符串长度
        int temp = str.size();
        if(temp < 1)
            return 0;
        // 第一个字符是'-',则flag = -1
        if(str[0] == '-')
        {
            flag = -flag;
        }
        
        // 如果第一个字符是‘-’,则从第二个字符开始遍历
        int i = (str[0] == '-' || str[0] == '+') ? 1 : 0;
        for(i; i < temp; i++)
        {
            // 字符是数字直接操作,否则返回0
            if(str[i] >= '0' && str[i] <= '9')
                ret = ret * 10 + (str[i] -'0');
            else
                return 0;
        }
        // 这里返回ret*flag
        return ret * flag;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_43967449/article/details/106613456