zoukankan      html  css  js  c++  java
  • 8. String to Integer (atoi) 溢出判断

    https://leetcode.com/problems/string-to-integer-atoi/

    class Solution {
    public:
        int myAtoi(string str) {
            if(str.empty()) return 0;
            int sign=1,base=0,i=0;
            
            while(str[i]==' ') i++;
            
            if(str[i]=='+') i++;
            else if(str[i]=='-') sign=-1,i++;
            
            while(i<str.size() && str[i]>='0' && str[i]<='9'){
                if(base>INT_MAX/10 || (base==INT_MAX/10 && (str[i]-'0')>7)){
                    return (sign==1)?INT_MAX:INT_MIN;
                }
                base = base*10 + str[i++]-'0';
            }
            
            return sign*base;
        }
    };

    为什么可以使用如下形式统一处理

    if(base>INT_MAX/10 || (base==INT_MAX/10 && (str[i]-'0')>7))

    对于INT_MAX情况使用

    if(base>INT_MAX/10 || (base==INT_MAX/10 && (str[i]-'0')>6))

    或者

    if(base>INT_MAX/10 || (base==INT_MAX/10 && (str[i]-'0')>7))

    对于INT_MIN情况使用

    if(base>INT_MAX/10 || (base==INT_MAX/10 && (str[i]-'0')>7))

    或者

    if(base>INT_MAX/10 || (base==INT_MAX/10 && (str[i]-'0')>8))

    因此可以使用统一形式处理。

  • 相关阅读:
    会议记录
    周总结
    团队博客
    周总结
    移动端疫情展示
    代码规范
    阅读笔记2
    解决 import numpy as np ModuleNotFoundError: No module named 'numpy'错误
    周总结
    爬取最新疫情数据
  • 原文地址:https://www.cnblogs.com/daijkstra/p/5091842.html
Copyright © 2011-2022 走看看