当前位置:网站首页>牛客刷题——把字符串转换成整数

牛客刷题——把字符串转换成整数

2022-06-11 18:14:00 HHYX.

把字符串转换成整数

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

题目描述

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

数据范围:字符串长度满足 0 \le n \le 100 \0≤n≤100
进阶:空间复杂度 O(1) \O(1) ,时间复杂度 O(n) \O(n)

注意:
①字符串中可能出现任意符号,出现除 +/- 以外符号时直接输出 0
②字符串中可能出现 +/- 且仅可能出现在字符串首位。
输入描述:
输入一个字符串,包括数字字母符号,可以为空
返回值描述:
如果是合法的数值表达则返回该数字,否则返回0
在这里插入图片描述

题目分析

题中要求将字符串转换为整数,不能使用库函数等。其中如果字符串包含非法字符则返回0.实现这个转换可以先对符号进行判断其正负,正负号只能出现在第一个字符上,因此可以先进行判断。如果没有正负号则直接进行字符串转换。使用循环遍历字符串,依次将字符转换为数字只需要将数字字符减去字符0即可,再进行求和即可。求和公式为sum=sum*10+(str[i]-‘0’),这样就可以求出总和,最后根据正负来进行计算即可。代码实现如下:

代码实现

int StrToInt(string str) {
    
                int i = 0;
        int sum = 0;//返回值 整数大小
        int flag = 1;//正负判断依据 1代表正 0代表负
        for (i = 0; i < str.size(); i++)
        {
    
            if (i != 0 && (str[i] < '0' || str[i]>'9'))//出现非法字符情况
            {
    
                return 0;
            }
            else
            {
    
                if (i == 0)
                {
    
                    if (str[i] == '+')
                    {
    
                        flag = 1;
                        continue;
                    }
                    else if (str[i] == '-')
                    {
    
                        flag = 0;
                        continue;

                    }
                    else
                    {
    
                        sum = sum * 10 + (str[i] - '0');
                        continue;
                    }
                }
                sum = sum * 10 + (str[i] - '0');
            }

        }
        if (flag == 0)
        {
    
            sum *= -1;
        }
        return sum;
    }

在这里插入图片描述

原网站

版权声明
本文为[HHYX.]所创,转载请带上原文链接,感谢
https://blog.csdn.net/h1091068389/article/details/125059129