1. 程式人生 > 實用技巧 >leetcode7.整數反轉

leetcode7.整數反轉

public class LeetCode7 {
//資料存放
public static int num;
//依次存放單個數據單位
public static int newRec;
//存放反轉資料,並初始化為0
public static int rec=0;
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
System.out.println("請輸入你要反轉的數值:");
num=sc.nextInt();
/**
* while迴圈依次將原始資料個位數挪到新資料最頂位,並刪除原始資料個位重新迴圈
* 做法:通過原始資料取餘得到個位數據,然後移位到新資料
* 之後將原始資料除10,去掉原始資料最後一位。
* 第二次迴圈重新之前步驟,此時將新資料*10並與新個位數相加,得到一個新資料
* 例:1234->
* 4,添4
* 123->
* 3.43
* ...
*/
while (num!=0){
//獲取個位數數值
newRec=num%10;
//存放資料(依次將個位數newRec挪到最高位)
if(rec>Integer.MAX_VALUE/10||(rec==Integer.MAX_VALUE/10&&newRec>7))System.out.println("0");
if(rec<Integer.MIN_VALUE/10||(rec==Integer.MIN_VALUE/10&&newRec<-8))System.out.println("0");
rec=rec*10+newRec;
num/=10;
}
System.out.println("該數值的反轉數值為"+rec);
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
}

/**
* 還需要判斷是否溢位,如果溢位則需要返回0
* leetcode題解
* class Solution {
* public int reverse(int x) {
* int rec=0,newRec;
* while(x!=0){
* newRec=x%10;
* if(rec>Integer.MAX_VALUE/10||(rec==Integer.MAX_VALUE/10&&newRec>7))return 0;
* if(rec<Integer.MIN_VALUE/10||(rec==Integer.MIN_VALUE/10&&newRec<-8))return 0;
* rec=rec*10+newRec;
* x/=10;
* }
* return rec;
* }
* }
*/