zoukankan      html  css  js  c++  java
  • 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);
        }
    };
    

      

  • 相关阅读:
    Redis 集群模式
    Redis 哨兵模式
    加密盐的意义
    GeoJSON扩展几何图形格式
    GeoJSON格式规范说明
    个人作业-记账本
    疫情数据爬取
    数据库的修改
    《构建之法》读书笔记(三)
    《构建之法》读书笔记(二)
  • 原文地址:https://www.cnblogs.com/zhouzhuo/p/3681847.html
Copyright © 2011-2022 走看看