当前位置:   article > 正文

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

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

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

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

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; 
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
扩展:

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

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;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/380561
推荐阅读
相关标签
  

闽ICP备14008679号