• Leetcode atoi


    题目

    总结

    1. int 的问题上升到 long long 以减少判断

    2. longlong int BIG_INT 不能通过 10 * INT_MAX 获得, 必须手动指定

    int conversion(const char *substr, bool neg) {
    	int len = strlen(substr);
    
    	long long int sum = 0;
    	long long int BIG_MAX = 22222222222;
    	int i;
    
    
    	for(i = 0; i < len && sum <= BIG_MAX; i ++) {
    		if(substr[i] >= '0' && substr[i] <= '9')  {
    			sum = sum * 10 + substr[i] - '0';
    		} else {
    			break;
    		}
    	}
    
    	if(neg) {
    		if(-1*sum <= INT_MIN)  {
    			return INT_MIN;
    		}
    		return int(-1*sum);
    	}
    
    	if(sum >= INT_MAX)  {
    		return INT_MAX;
    	}
    	return sum;
    }
    
    class Solution {
    public:
        int atoi(const char *str) {
            bool neg = false;
    
           	int len = strlen(str);
    
           	int i;
           	for(i = 0; i < len; i ++)  {
           		if(str[i] >= '0' && str[i] <= '9') {
           			break;
           		}
           		if(str[i] == '+' || str[i] == '-') {
           			if(str[i] == '-')
           				neg = true;
           			i ++;
           			break;
           		}
    
           		if(str[i] == ' ') continue;
    
           		else  {
           			return 0;
           		}
           	}
    
           	if(i >= len) return 0;
           	if(!(str[i] <= '9' && str[i] >= '0')) return 0;
    
           	return conversion(str+i, neg);
        }
    };
    

      

  • 相关阅读:
    往鼠标位置写入 诗词
    shell条件判断
    shell 案例一
    Shell中的变量
    echo e 命令详解
    Docker 安装RedisJSON 与使用
    Python 插入数据库的各种方式
    Python压缩文件/文件夹
    shell运算符
    关于CAN总线简单总结
  • 原文地址:https://www.cnblogs.com/zhouzhuo/p/3681847.html
Copyright © 2020-2023  润新知