把字符串转换成整数


1. 题目描述

题目链接:把字符串转换成整数

在这里插入图片描述

2. 解题思路

用一个 index 全程记录字符串下标。按照题目要求的点,先排除前导空格,再检查符号,最后转换数字,遇到非数字即停止转换,直接输出前面部分,最后注意边界等情况。一个遍历即可解决。

算法如下:

(1)去掉无用的前导空格

(2)第一个非空字符为 + 或者 - 号时,作为该整数的正负号,如果没有符号,默认为正数

(3)判断整数的有效部分,确定符号位之后,与之后面尽可能多的连续数字组合起来成为有效整数数字,如果没有有效的整数部分,那么直接返回 0

(4)将字符串前面的整数部分取出,后面可能会存在存在多余的字符(字母,符号,空格等),这些字符可以被忽略,它们对于函数不应该造成影响

注意:

(1)将字符转换为数字的方法:c - '0'

(2)求和公式:sum = sum * 10 + (c - '0')

3. 代码实现

代码示例

class Solution {
public:
    int StrToInt(string str) {
        // 求和公式:sum = sum * 10 + (c - '0')
        int index = 0; //遍历字符串下标
        int sign = 1; //符号位
        long long sum = 0; //存放整数

        //排除前导空格(也可以不写,因为题目没有说有空格)
        while (index < str.size())
        {
            if (str[index] != ' ') //如果第一个字符不是空格,那么直接退出
                break;
            index++;
        }

        //判断正负数的情况
        if (str[index] == '-') {
            sign = -1;
            index++;
        }
        else if (str[index] == '+') {
            index++;
        }

        //开始遍历
        while (index < str.size())
        {
            if (str[index] >= '0' && str[index] <= '9') { //如果字符合法,那么直接累加
                sum = sum * 10 + (str[index] - '0');
                index++;
            }
            else { //否则直接返回0
                sum = 0;
                break;
            }
        }
        sum *= sign; //最后乘以符号位
        return sum;
    }
};
  • 9
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Albert Edison

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值