zoukankan      html  css  js  c++  java
  • leetcode-剑指67-OK

    // language C with STL(C++)
    // 剑指67
    // https://leetcode-cn.com/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/comments/
    // 同主站8题
    // https://leetcode-cn.com/problems/string-to-integer-atoi/
    
    
    class Solution {
    public:
        long power_10(long i){
            long res = 1;
            while(i>0){
                res*=10;
                i--;
            }
            return res;
        }
        int char2int(char c){
            if(c =='0')
                return 0;
            if(c =='1')
                return 1;
            if(c =='2')
                return 2;
            if(c =='3')
                return 3;
            if(c =='4')
                return 4;
            if(c =='5')
                return 5;
            if(c =='6')
                return 6;
            if(c =='7')
                return 7;
            if(c =='8')
                return 8;
            if(c =='9')
                return 9;
            return 10;  // 出错了
    
        }
        int strToInt(string str) {
            int firstNOTspace = 0;
            while(str[firstNOTspace] ==' ')
                firstNOTspace++;    //找到第一个非空格字符
            if(str[firstNOTspace] == '')
                return 0;
            bool minus = false;
            if(str[firstNOTspace]== '-'){
                minus = true;
                firstNOTspace++;
            }else if(str[firstNOTspace]== '+')    firstNOTspace++;
            while(str[firstNOTspace]== '0')
                firstNOTspace++;
            int FirstDigit = firstNOTspace;
            // printf("%d-", FirstDigit);
            while(char2int(str[firstNOTspace]) <10)
                firstNOTspace++;
            int LastDigit = firstNOTspace-1;
            // printf("%d", LastDigit);
            if(LastDigit<FirstDigit)
                return 0;
            long res=0;
            if(LastDigit-FirstDigit>= 10){
                if(minus)
                    return INT_MIN;
                else
                    return INT_MAX;
            }
            for(int i = LastDigit; i>=FirstDigit; i--){
                res += char2int(str[i]) * power_10(LastDigit-i);
            }
            if(minus)
                res *= (-1);
            if(res<= -2147483648)
                return INT_MIN;
            if(res>= 2147483648)
                return INT_MAX;
            return (int)res;
        }
    };
    
  • 相关阅读:
    生成缩略图时报GDI+中发生一般性错误
    跨数据库服务器查询和跨表更新
    javascript,jquery(闭包概念)
    聚集索引和非聚集索引(整理)
    ASP.NET MVC的过滤器
    如何在标题栏title前添加网站logo?
    sql语句执行顺序
    详解ASP.NET MVC的请求生命周期
    在事务中执行批量复制操作SqlBulkCopy,SqlTransaction .
    基于TCP 协议的RPC
  • 原文地址:https://www.cnblogs.com/gallien/p/14379288.html
Copyright © 2011-2022 走看看