zoukankan      html  css  js  c++  java
  • 【剑指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;
        }
    };
    
  • 相关阅读:
    51nod 1127 最短的包含字符串
    hdu 2197 本原串
    hdu 2160 母猪的故事
    hdu 2594 Simpsons’ Hidden Talents
    自旋锁原理及java自旋锁
    Java中CAS详解
    dump相关
    多线程设置线程超时思路
    kafka遗忘点
    Java 和 HTTP 的那些事(四) HTTPS 和 证书(转)
  • 原文地址:https://www.cnblogs.com/flix/p/12560660.html
Copyright © 2011-2022 走看看