JZ49:把字符串转换成整数

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

解题思路

  • 简单判断
  • 字符串中包含字符、数字、空格。首先应该去掉前导、后导空格。

上代码(C++香)

int StrToInt(string str) {
    int length = str.length();
    if(length <= 0)
        return 0;
    long long ans = 0;
    int flag = 1;

    // 首先应该排除空格(允许前面后面有空格)
    int m = 0;
    while (m < length && str[m] == ' ')
        ++m;
    int k = length - 1;
    while (k >= 0 && str[k] == ' ')
        --k;
    for(int i = m; i <= k; i++){
        if(!(str[i] >= '0' && str[i] <= '9')){
            if(i == m && str[i] == '+')
                flag = 1;
            else if(i == m && str[i] == '-')
                flag = -1;
            else
                return 0;
            continue;
        }
        // 此处应该加一个判断数值是否越界int
        ans = ans * 10 + (str[i] - '0');
        //cout<<"ans = "<<ans<<endl;
    }
    return flag * ans;

}
posted @ 2020-08-19 20:00  程序员曾奈斯  阅读(148)  评论(0编辑  收藏  举报