LeetCode:7、给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

一、题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。题目链接
示例:
输入: 123
输出: 321
示例:
输入: -123
输出: -321
示例:
输入: 120
输出: 21
二、分析:

1、遍历数组取出每一位即可
这里面有一个经常会用的思想:取出一个数字的每一位
举个栗子: 取出int x = 12345的每一位

代码展示:取出一个数字的每一位
int n = 0;
StringBulider s = new StringBulider();
while(x != 0) {
	n = n*10 + x%10;
	s.append(n);
	x /= 10;
}

2、这里有一个细节:传递过来的参数 x 是 int 类型,最后返回的数字是int类型,所以需要将反转后的数字应该定义成 long,再转换为int类型返回
3、如果(int)n == n,就代表反转后的数字在 int 范围内,可以返回,否则就返回0

三、代码展示:
class Solution {
    public int reverse(int x) {
    	//定义long类型的变量
        long n = 0;
        while(x != 0) {
			n = n*10 + x%10;
			x /= 10;
		}
		return (int)n == n ? n:0; 
    }
}
扩展:

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。题目链接

class Solution {
    public boolean isPalindrome(int x) {
        int j = x;
        if(x < 0) {
            return false;
        }
        long n = 0;
        while (x != 0) {
            n = n*10 + x%10;
            x /= 10;
        }
        return (int)n == j;
    }
}

你可能感兴趣的:(leetcode刷题)