LeetCode刷题笔记---------Inverse Integer

题目要求:将整型数反转
例子:
输入:123
输出:321
输入:-456
输出:-654

  • 解法
    分析:这里可以不借助任何数据结构,采用求余的方法依次求出最后一位数pop,然后ans*10 + pop就可以计算出结果
    注意:这里需要进行判断越界,如果越界就返回0
    (1)java中int类型的范围
    LeetCode刷题笔记---------Inverse Integer_第1张图片
    (2)越界判断
    根据上图可知越界情况为:
    ans >= MAX_VALUE/10 或者 ans <= MIN_VALUE/10
    (3)代码
public static int reverseInt(int x) {
		if(x == 0 )
			return 0;
		int answer = 0;
		while(x != 0) {
			int pop = x % 10;
			x = x / 10;
			// < > 成立的时候 一定会越界   == 成立的时候, 此时需要判断pop的大小
			if(answer > Integer.MAX_VALUE/10 || answer == Integer.MAX_VALUE/10 && pop > 7) return 0;
			if(answer < Integer.MIN_VALUE/10 || answer == Integer.MIN_VALUE/10 && pop < -8 ) return 0;
			answer = answer * 10 + pop;
			
		}
		return answer;
	}

时间复杂度:由于每次x变为原来的1/10倍,故时间复杂度大约为 log(n)

你可能感兴趣的:(LeetCode)