• [leetcode]String to Integer (atoi)


    水题。需要注意的是特殊情况考虑。一是前面的空格,二是最后的非数字字符,三是正负符号(我考虑了负号,忘记了正号),四是溢出,而且溢出还分两种,一是2147483649这样的溢出,二是10000000000这样的溢出,多一位(我只考虑了一种)。五是空字符串。最终代码pass,但其实还忘了处理null。

    代码如下:

    public class Solution {
        public int atoi(String str) {
            // Start typing your Java solution below
            // DO NOT write main() function
            int ans = 0;
            int i = 0;
            boolean neg = false;
            boolean overflow = false;
            int len = str.length();
            
            while (i < len && str.charAt(i) == ' ') i ++;
            // the first char
            if (i < len && str.charAt(i) == '-')
            {
            	neg = true;
            	i++;
            }
            if (i < len && str.charAt(i) == '+')
            {
            	neg = false;
            	i++;
            }
            while (i < len && str.charAt(i) >= '0' && str.charAt(i) <= '9')
            {
            	int d = str.charAt(i) - '0';
            	if (ans >= 214748364)
            	{
            		if ((!neg && d >= 7) || neg && d >= 8 || (ans >= 1000000000))
            		{
            			overflow = true;
            			break;
            		}
            	}
            	ans = ans * 10 + d;
            	i++;
            }
            if (overflow)        	
            {
            	if (!neg) return Integer.MAX_VALUE;
            	else return Integer.MIN_VALUE;
            }
            if (neg) return ans * (-1);
            else return ans;
        }
    }
    

    另外对溢出的判断还可以用类似下面的代码:

    if (INT_MAX / 10 >= ret)
         ret *= 10;
    else
         return sign == -1 ? INT_MIN : INT_MAX;
          
    if (INT_MAX - digit >= ret)
         ret += digit;
    else
         return sign == -1 ? INT_MIN : INT_MAX;
    

      

  • 相关阅读:
    搭建视频网站光线cms
    Linux FTP服务配置
    Chromium下载地址
    Ubuntu Server批量ping选择最快源
    vs2010扩展
    私有云
    mssql格式化输出
    CSLA .NET 3.6支持Silverlight 2
    Unity Application Block 1.2 for Silverlight December 2008
    silverlight寻奇 Graphite
  • 原文地址:https://www.cnblogs.com/lautsie/p/3216281.html
Copyright © 2020-2023  润新知