zoukankan      html  css  js  c++  java
  • 剑指offer系列——49.把字符串转换成整数

    Q:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
    输入一个字符串,包括数字字母符号,可以为空。如果是合法的数值表达则返回该数字,否则返回0
    示例1
    输入
    +2147483647
    1a33
    输出
    2147483647
    0

    T:
    注意一个上下溢出的问题。INT_MAX=2147483647,INT_MIN=-2147483649,最大值的绝对值小于最小值的绝对值。
    代码:

        int StrToInt(string str) {
            if (str.empty())
                return 0;
            int result = 0;
            int symbol = 1;
            bool flag = false;
            if (str[0] == '+')
                flag = true;
            else if (str[0] == '-') {
                flag = true;
                symbol *= -1;
            }
            int i = 0;
            if (flag)
                i = 1;
            int temp = 0;
            for (; i < str.size(); i++) {
                if (str[i] >= '0' && str[i] <= '9') {
                    temp = str[i] - '0';
                    if (symbol > 0 && (result >= INT_MAX / 10) && (temp > INT_MAX % 10))
                        return 0;
                    if (symbol < 0 && (result * symbol <= INT_MIN / 10) && (temp * symbol < INT_MIN % 10))
                        return 0;
                    result = result * 10 + temp;
                } else
                    return 0;
            }
            result = result * symbol;
            return result;
        }
    
  • 相关阅读:
    学习方法与经验总结
    工具综合症?资料收集狂?
    SpringMVC 过滤器Filter使用解析
    Spring 管理Filter和Servlet
    pom.xml配置详解
    开发Java web应用程序的介绍
    java web构建学习(概念基础)
    题目1474:矩阵幂
    题目1473:二进制数
    Python strip()方法
  • 原文地址:https://www.cnblogs.com/xym4869/p/12350021.html
Copyright © 2011-2022 走看看