• 【剑指Offer-面试案例】面试题66:把字符串转为整数


    题目描述

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

    思路

    首先判断该数字是整数还是负数,然后在转换的过程中判断字符串表示的数字是否溢出。题目的数字范围是有符号的int型整数,有符号的int型整数(4个字节)的范围为-2147483648 ~ +2147483647,也就是-0x80000000~0x7FFFFFFF。代码如下:

    class Solution {
    public:
        int StrToInt(string str) {
            if(str.empty())
                return 0;
            
            bool isNeg = false;    // 标记是否为负数
            bool index0IsNum = true;    //标记第一位是否为数字
            if(str[0]<'0' || str[0]>'9'){
                if(str[0]=='-')
                    isNeg = true;
                index0IsNum = false;
            }
            
            int start = index0IsNum? 0:1; //起始的遍历位置
            long long num = 0;
            for(int i=start; i<str.length(); i++){
                if(str[i]>='0' && str[i]<='9'){
                    num = num*10 + str[i] - '0';
                    if((!isNeg && num>0x7FFFFFFF) || (isNeg && num>0x80000000))
                        return 0;
                }
                else return 0;
            }
            
            if(isNeg)
                return -num;
            else return num;
        }
    };
    
  • 相关阅读:
    查找算法:二分查找法(折半查找)
    钞票找零-贪心,动态规划算法
    PHP7与php5
    网站高并发解决方案(理论知识) 二
    loj#6566. 月之都的密码
    我的 Linux 配置
    CTSC2011 幸福路径
    WC2018 即时战略
    uoj#460 新年的拯救计划
    bzoj 5016 一个简单的询问
  • 原文地址:https://www.cnblogs.com/flix/p/12560660.html
Copyright © 2020-2023  润新知