Int数据溢出的检查 leetcode7

Int数据溢出的检查 leetcode7

一、题目:

7. 整数反转

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

示例 1:

输入: 123 输出: 321

示例 2:

输入: -123 输出: -321

示例 3:

输入: 120 输出: 21

注意:

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

二、解答:

方法:

  • 需要知道int型数据的范围——int类型是32位的,范围是-2147483648到2147483647
  • 溢出发生在求 num=num*10+item; 时,如果此时num*10+item的值已经超出范围,此时再赋给num就会发生溢出,因此我们需要在完成赋值前,对赋值是否会发生溢出做一个预先的判断
  • 溢出的判断条件:
    • 当num为正数时
    • 如果num>Integer.MAX_VAlUE/10的话,肯定是会溢出
    • 如果num==Integer.MAX_VALUE/10并且item>7(参考最大值2147483647)的情况下会溢出

      当num为负数时反过来即可

Java代码:

class Solution {

  public int reverse(int x) {

?    int num=0;

?    int item;

?    while(x!=0){

?      item=x%10;

?      x=x/10;

?      //当x为正数的溢出情况

?      if(num>Integer.MAX_VALUE/10||(num==Integer.MAX_VALUE/10&&item>7))

?      return 0;

?      if(num<Integer.MIN_VALUE/10||(num==Integer.MIN_VALUE/10&&item<-8))

?      return 0;

?      num=num*10+item;      

?    }

?    return num;

  }

}

原文地址:https://www.cnblogs.com/zhang-qi123/p/12306428.html

时间: 2024-10-09 17:50:18

Int数据溢出的检查 leetcode7的相关文章

Android中如何将Bitmap byte裸数据转换成Bitmap图片int数据

2014-06-11 10:45:14   阅读375次 我们在JNI中处理得到的BMP图片Raw数据,我们应该如何转换为Bitmap呢? 由于得到的数据是unsigned char *类型的数据,而对于Bitmap的类来说,其类方法里面: 1 2 public static Bitmap createBitmap(int colors[], int offset, int stride,             int width, int height, Config config) 要求传

在kettle中实现数据验证和检查

在kettle中实现数据验证和检查 在ETL项目,输入数据通常不能保证一致性.在kettle中有一些步骤能够实现数据验证或检查.验证步骤能够在一些计算的基础上验证行货字段:过滤步骤实现数据过滤:javascript步骤能够实现更复杂的计算. 通常以某种方式查看那些数据是有缺陷的也是实用的,由于大多数ETL是无人值守执行的,所以通常ETL程序会把这些缺陷数据通知给ETL开发人员或管理员.建议把这些问题数据行保存到一个特定的公共表格中,以便跟踪这些数据:那么该表格应该包含一些元信息,如:执行转换的名

java Int数据工具类

1.在使用tcp协议传输数据时,使用到的 Int 数据的工具类方法 //将 Int 数据转换成字节数组 public static byte[] intToByteArray(int data){ byte[] result = new byte[4]; result[0] = (byte)((data >> 24) & 0xFF); result[1] = (byte)((data >> 16) & 0xFF); result[2] = (byte)((data

c语言位域的使用注意事项——数据溢出

c语言可以使用位域来节省变量的空间,例如开关只有通电和断电两种状态,用 0 和 1 表示足以,也就是用一个二进位.位域的取值范围非常有限,数据稍微大些就会发生溢出,这个字使用keil的使用,keil提示,溢出的警告, 因此不能忽视keil的任何警告,否则数据溢出了,你代码的功能是完不成的. struct pack{unsigned a:12;  unsigned  :20;//该位域成员不能使用,用于填充unsigned c:6;  }; 另一种是可以拿来填充,因为存在内存对齐的原因. 原文地址

PAT 甲级 1104 Sum of Number Segments (20分)(有坑,int *int 可能会溢出)

1104 Sum of Number Segments (20分)   Given a sequence of positive numbers, a segment is defined to be a consecutive subsequence. For example, given the sequence { 0.1, 0.2, 0.3, 0.4 }, we have 10 segments: (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0

Java中的基本类型转换,数据溢出原理

java中的数据类型 java是一种强类型语言,在java中,数据类型主要有两大类,基本数据类型和引用数据类型,不同的数据类型有不同的数据存储方式和分配的内存大小. 基本数据类型中,各数据类型所表示的范围也是不一样的,如下所示: 由于在java中,整数默认是采用int型,浮点数默认采用的是double型进行存储,所以在定义long型和float型数据时,必须在数值后面加'l','L'和'f','F',如: 1 long a = 1000l; 2 long b = 2000L; 3 float c

Reverse Integer - 反转一个int,溢出时返回0

Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 若反转的数溢出,直接返回0 可以用计算结果来判断溢出,也可以用因数来判断 Java代码实现: 1 public class ReverseInteger { 2 public static int reverseInt(int x){ 3 if (x == 0) { 4 return

oracle11g dataguard 备库数据同步的检查方法

概述: 一.环境 主库: ip地址:192.168.122.203 oracle根目录:/data/db/oracle SID:qyq 数据文件路径/data/db/oracle/oradata/qyq 归档文件路径:/data/db/oracle/archive' 备库: ip地址:192.168.122.204 oracle根目录:/data/app/oracle SID:qyq 数据文件路径/data/app/oracle/oradata/qyq 归档文件路径:/data/app/orac

打印从1到n位数(防止数据溢出)

1 package LeetCode; 2 3 /*打印N位最大数据*/ 4 public class PrintToMaxOfDigits { 5 6 public static void main(String[] args) throws Exception { 7 // TODO Auto-generated method stub 8 PrintToMaxData(0); 9 } 10 public static void PrintToMaxData(int n) throws Ex