AcWing
  • 首页
  • 题库
  • 题解
  • 分享
  • 问答
  • 活动
  • 应用
  • 吐槽
  • 登录/注册

AcWing 87. 把字符串转换成整数    原题链接    中等

作者: 作者的头像   跟着xc学编程 ,  2020-02-14 15:07:10 ,  阅读 238


0


1

下面是代码。
class Solution {
public:
int strToInt(string str) {
if(str.size() == 0){ //如果字符串为空,直接返回。
return 0;
}
long int res = 0;//用来保存返回值。一定要位long int,可能16位的int不会编译通过。
int flag = 0; //这个flag用来标记有没有符号位。没有0,+:1,-:2.
int i = 0; //这个指针用来记录第一个非空位置。

    //得到第一个非空的字符的位置。
    while(str[i] == ' ') 
        i++;

    //判断第一个非空字符是不是符号位。
    if(str[i] == '+') flag = 1;
    if(str[i] == '-') flag = 2;

    //得到第一个数字的位置。也就是符号位之后的那个数字。
    int start = flag > 0? (i+1): i;

    //进行遍历。
    while(start < str.size()){

        //如果当前的不是数字,后面的也不再循环。
        if(str[start] > '9' || str[start] < '0'){
            break;
        }

        //累加得到的结果。用str[str] - '0'将字符更改为数字。
        res = res*10 + str[start] - '0';
        start ++ ;
    }

    //为了判断最后是不是超过了表示范围。再次保存一个临时结果变量。
    long int res2 = flag>1?-res:res;

    //判断结果。如果没有受限,则返回res2.
    if(res2 > INT_MAX) return INT_MAX;
    if(res2 < INT_MIN) return INT_MIN;
    return res2;

}

};

0 评论

你确定删除吗?

© 2018-2021 AcWing 版权所有  |  京ICP备17053197号-1
联系我们  |  常见问题
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息