精华内容
下载资源
问答
  • Java实现 整数反转

    2020-07-29 04:39:24
    整数反转 原题地址: https://leetcode-cn.com/problems/reverse-integer/ 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 ...

    原题地址: https://leetcode-cn.com/problems/reverse-integer/

    题目描述

    整数反转

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

    示例 1:
    输入: 123
    输出: 321

    示例 2:
    输入: -123
    输出: -321

    示例 3:
    输入: 120
    输出: 21

    注意:
    假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31 , 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

    第一种解法思路:
    使用字符串反转拼接的方法来实现整数反转

    import java.util.Scanner;
    
    public class 整数反转4 {
    
    	public static void main(String[] args) {
    		// 输入一个数字
    		Scanner sc = new Scanner(System.in);
    		int x = sc.nextInt();
    		
    		// 返回反转后的数字
    		System.out.println(reverse(x));
    		sc.close();
    	}
    
    	public static int reverse(int x) {
    		// 将整数转换成字符串
    		String str = Integer.toString(x);
    		// 将字符串转换成字符数组
    		char[] num = str.toCharArray();
    		// 数组初始值下标
    		int minIndex = 0;
    		// 数组长度(最大下标)
    		int maxIndex = str.length();
    		// 用字符串缓冲类来拼接字符串
    		StringBuffer sBuffer = new StringBuffer();
    
    		// 查看这个数是不是复数,是就初始下标+1
    		if (num[0] == '-') {
    			minIndex++;
    		}
    
    		// 查看这个数最后位数是不是零,是就去掉,上限-1
    		while (num[--maxIndex] == '0' && maxIndex > 1) {
    		}
    
    		// 字符串的拼接
    		for (int i = maxIndex; i >= minIndex; i--) {
    			sBuffer.append(num[i]);
    		}
    		// 用try 查看是否报错,报错就说明将字符串转换后的数字超出整形界限 2^31-1(2147483647) 和 -2^31(-2147483648)
    		try {
    			// 查看初始值是否是零,来判断是否是复数
    			return minIndex == 0 ? Integer.valueOf(sBuffer.toString()) : -Integer.valueOf(sBuffer.toString());
    		} catch (Exception e) {
    			return 0;
    		}
    
    	}
    
    }
    
    

    然后发现字符串缓冲类里是提供的有reverse()这个字符串翻转的方法的……

    
    	public static int reverse(int x) {
    		String str = Integer.toString(x);
    	
    		try {
    			if(str.charAt(0) == '-'){
    				return -Integer.valueOf(new StringBuffer(str.substring(1,str.length())).reverse().toString());
    			}else{
    				return Integer.valueOf(new StringBuffer(str).reverse().toString());
    			}
    		} catch (Exception e) {
    			return 0;
    		}
    		
    	}
    

    还可以这样

    public static int reverse(int x) {
    		// 用长整形储存反转后的值
    		long n = 0;
    		
    		while (x != 0) {
    			//n的第一位数就是x的最后一位数,依次循环,负数取余后仍是负数
    			n = n * 10 + x % 10;
    			x = x / 10;
    		}
    		// int整形范围为 −2^31 ~ 2^31−1 为 -2147483648 ~ 2147483647
    		//return (int) ((n<Integer.MAX_VALUE && n > Integer.MIN_VALUE)?n:0);
    		// 如果强行转换后的int整形数据与原long的数据不一致,则说明数据已经溢出超出int范围
    		return (int) n == n ? (int) n : 0;
    	}
    
    展开全文
  • 一、将 int 整数通过 String 转换,溢出捕获class Solution {public int reverse(int x) {long nums = 0;int temp = 1;try {temp = x / Math.abs(x);StringBuilder num = new StringBuilder();num.append(Math.abs(x...

    c019304a38b7c7a62ecd5e21ff29d205.png

    一、将 int 整数通过 String 转换,溢出捕获class Solution {

    public int reverse(int x) {

    long nums = 0;

    int temp = 1;

    try {

    temp = x / Math.abs(x);

    StringBuilder num = new StringBuilder();

    num.append(Math.abs(x));

    nums = Long.parseLong(num.reverse().toString());

    if(nums > Math.pow(2, 31) - 1) {

    return 0;

    }

    } catch (Exception e) {

    // TODO: handle exception

    return 0;

    }

    return (int)nums*temp;

    }

    }

    字符串转换的效率较低且使用较多库函数。

    (推荐学习视频教程:java视频教程)

    二、取余方式class Solution {

    public int reverse(int x) {

    int ans = 0;

    while(x != 0) {

    // 判断溢出

    if((ans * 10) / 10 != ans) {

    ans = 0;

    break;

    }

    // ans*10 没有溢出

    ans = ans * 10 + x % 10;

    x /= 10;

    }

    return ans;

    }

    }

    (ans * 10) / 10 其中的 ans*10 ,java虚拟机内部实际上是进行了数值类型提升,即溢出时,用long类型数据暂时存储,最后通过变窄转换,保留低32位数值得到 (ans * 10) / 10 != ans 。因此是不能满足只存储32位整数的条件的。

    相关文章教程推荐:java入门教程

    展开全文
  • 使用Java实现整数反转

    2021-04-02 09:48:41
    使用Java实现整数反转 public static void main(String[] args) { while(true) { System.out.println("请输入一个数:"); Scanner sc = new Scanner(System.in); int x = sc.nextInt(); if (x == 0) { ...

    使用Java实现整数反转

    public static void main(String[] args) {
        while(true) {
            System.out.println("请输入一个数:");
            Scanner sc = new Scanner(System.in);
            int x = sc.nextInt();
            if (x == 0) {
                System.out.println(x);
                return;
            }
            int num = 0;
            while (x != 0) {
                int pop = x % 10;
                x = x / 10;
    //          判断是否越界溢出
                if (num > Integer.MAX_VALUE / 10 || (num == Integer.MAX_VALUE / 10 && pop > 7)) {
                    System.out.println(0);
                    return ;
                }
                if (num < Integer.MIN_VALUE / 10 || (num == Integer.MIN_VALUE / 10 && pop < -8)) {
                    System.out.println(0);
                    return;
                }
                num = num * 10 + pop;
                System.out.println("num" + num);
            }
            System.out.println(num);
        }
    }
    展开全文
  • java实现整数反转的两种方式发布时间:2020-05-19 15:59:17来源:亿速云阅读:1079作者:小新今天小编给大家分享的是java实现整数反转的两种方式,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下...

    java实现整数反转的两种方式

    发布时间:2020-05-19 15:59:17

    来源:亿速云

    阅读:1079

    作者:小新

    今天小编给大家分享的是java实现整数反转的两种方式,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。

    一、将 int 整数通过 String 转换,溢出捕获class Solution {

    public int reverse(int x) {

    long nums = 0;

    int temp = 1;

    try {

    temp = x / Math.abs(x);

    StringBuilder num = new StringBuilder();

    num.append(Math.abs(x));

    nums = Long.parseLong(num.reverse().toString());

    if(nums > Math.pow(2, 31) - 1) {

    return 0;

    }

    } catch (Exception e) {

    // TODO: handle exception

    return 0;

    }

    return (int)nums*temp;

    }

    }

    字符串转换的效率较低且使用较多库函数。

    二、取余方式class Solution {

    public int reverse(int x) {

    int ans = 0;

    while(x != 0) {

    // 判断溢出

    if((ans * 10) / 10 != ans) {

    ans = 0;

    break;

    }

    // ans*10 没有溢出

    ans = ans * 10 + x % 10;

    x /= 10;

    }

    return ans;

    }

    }

    (ans * 10) / 10 其中的 ans*10 ,java虚拟机内部实际上是进行了数值类型提升,即溢出时,用long类型数据暂时存储,最后通过变窄转换,保留低32位数值得到 (ans * 10) / 10 != ans 。因此是不能满足只存储32位整数的条件的。

    以上就是java实现整数反转的两种方式的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注亿速云行业资讯频道哦!

    展开全文
  • 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。... 来源:力扣第七题 示例 1:输入: 123 输出: 321 示例 2:输入: -123 输出: -321 示例 3:输入: 120 输出: 21分析:拿1543举例,因为实现整数...
  • java实现整数反转

    2020-07-29 20:39:56
    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。...分析:拿1543举例,因为实现整数反转,所以最后要输出3451,因为这是一道算法题,所以我们要从数学的角度出发,1543分别对10取余
  • 一、将 int 整数通过 String 转换,溢出捕获class Solution {public int reverse(int x) {long nums = 0;int temp = 1;try {temp = x / Math.abs(x);StringBuilder num = new StringBuilder();num.append(Math.abs(x...
  • 题目来源:LeetCode Reverse digits of an integer. Example1: x = 123, ...思路:将整数转为数组,通过数组的角标来实现反转,再将数组最终转为int类型(数组–&gt;String–&gt;Integer)public class rever
  • 模十取余参数不断模10取得最低位,相反数不断乘10相加,(通过参数除10不断刷新最低位)得到最终相反数的反转结果/*整数反转*/class Test2 {public static void main(String[] args) {int num = reverseInt(123);...
  • java实现整数反转

    2020-05-23 10:38:40
    * 题目:整数反转:123---》321 */ public class IntegerReversal { public static void main(String[] args) { System.out.println("请输入需要反转的数字:");// 注意不能超过int类型最大长度 int num = new ...
  • Java实现 LeetCode 7整数反转

    万次阅读 多人点赞 2020-02-12 09:50:35
    7. 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 ...
  • LeetCode_007_整数反转题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储...
  • 第7题:整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21V1版本V1版本简单暴力,将整数反转到list中...
  • Java实现-反转整数

    千次阅读 2017-06-26 22:00:08
    将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。 您在真实的面试中是否遇到过这个题?  Yes 样例 给定 x = 123,返回 321 给定 x = -123,返回 -321 ...
  • 如果反转整数超过 32 位的有符号整数的范围 [−231,231−1][−2^{31}, 2^{31} − 1][−231,231−1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 解析: 该题可以借助字符串实现,但是转换...
  • Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Example 2: Input: -123 Output: -321 Example 3: ... } } 关于int类型数据溢出的问题,移步博客:java-int数据的溢出
  • 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 java实现,非算法实现 package hello; ...
  • 题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转整数溢出那么就返回...
  • 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号...
  • Java 整数反转

    2020-06-05 14:23:06
    public class Test { public static void main(String[] args) { System.out.println... * rev是循环使用的,每循环一次最后一位就乘以10,并在改数后面拼接上前一位,以此来实现反转。 * 例如:输入为321, ..
  • 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的...
  • 浅析 LeetCode_007_整数反转Java 实现)LeetCode_007_整数反转题目描述总体分析解决方案小结 LeetCode_007_整数反转 题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: ...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 213
精华内容 85
关键字:

java实现整数反转

java 订阅