iOS 设计模式 && 算法程序员iOS Developer

每周一道算法题(五)

2017-04-15  本文已影响575人  CrazySteven

本周的算法题就是重复造轮子,难度水平‘中’

题目:将一个字符串转成int整型

需要注意的是:

    //sign为是否有负号,stop为是否有正号,i为遍历下标
    int sign = 0,stop = 0,i = 0;
    //result为结果
    long result = 0;
    //忽略前面的空格
    while(str[i] == ' ') {
        i++
    }
    for (int i = 0; i<strlen(str); i++) {
        //如果字符为数字
        if (str[i] >= '0' && str[i] <= '9') {
            result = result*10 + (str[i] - '0');
            if (result > INT_MAX) {
                break;
            }
        //如果字符是负号,并且之前没有负号
        }else if (str[i] == '-' && sign == 0) {
            sign = 1;
        //如果字符是正号,并且之前没有正号
        }else if (str[i] == '+' && stop == 0) {
            stop = 1;
        //如果字符是空格,并且前面没有数字
        }else {
            break;
        }
        //如果有正号也有负号
        if (sign && stop) {
            return 0;
        }
    }
    if (sign) {
        result = -result;
    }
    if (result >= INT_MAX) {
        return INT_MAX;
    }else if (result <= INT_MIN) {
        return INT_MIN;
    }
    return (int)result;

当然,C有简单的atoi等函数,或者使用上周算法题出现过的atol函数来解决溢出问题,轮子造好了,老司机开车吧。。。

版权声明:本文为 Crazy Steven 原创出品,欢迎转载,转载时请注明出处!

上一篇 下一篇

猜你喜欢

热点阅读