力扣演算法題(Leetcode)整數反轉【簡單】
題目描述:
-
給定一個int 型別數字 x 例如 123 - 324
-
回傳整數型別的反轉例如 321 -423
-
限制條件回傳數字的型別也是int 并且 x ->(-2^31, 2^31-1)
-
輸入的數字是32位的整數,如果遇到64位整數回傳0
-
0回傳0
解體思路:
-
利用char[]數字獲取數字的每一位,然后反轉char陣列,隨后toString最后Integer.parseInt() 核心代碼如下
//獲取chars陣列
char[] chars = String.valueOf(x).toCharArray();
//構造一個chars1陣列和chars的長度一樣
char[] chars1 = new char[chars.length];
//遍歷陣列,把從chars第0位開始給chars1最后一位,依此往中間靠攏
for (int i = 0; i <= chars.length - 1; i++) {
chars1[i] = chars[chars.length - 1 - i];
}
//通過構建物件的方式將chars1轉化為String型別
String str = new String(chars1);
- 對于負數的特殊處理
//獲取chars陣列
char[] chars = String.valueOf(x).toCharArray();
//構造一個chars1陣列和chars的長度一樣
char[] chars1 = new char[chars.length];
for (int i = 0; i <= chars.length - 1; i++) {
//遍歷陣列,把從chars第0位開始給chars1最后一位,依此往中間靠攏
chars1[i] = chars[chars.length - 1 - i];
}
//生成的陣列類似于[2,4,3,4,-],所以我們只需要除開最后一位的位數
//在char[]陣列中洗掉某個元素的方法-->也就是只取前n位的方法 Arrays.copyOfRange(chars,0,n)
char[] chars2 = Arrays.copyOfRange(chars1, 0, chars1.length - 1);
String str = new String(chars2);
- 對于超出部分的特殊處理 ep: 9876543211 --> 1123456789 , 1123456789–>9876543211 負數亦然
if(x>=0 && x<=2147483647) {
//省略的代碼
//將String型別轉化為long型別
//用long型別作為過渡(接收結果)
result = Long.parseLong(str);
if( result > 2147483647){
//如果結果已經大于int型別范圍就直接回傳0
return 0;
} else {
//如果結果沒有超出int型別范圍最后轉化為int型別
return (int)result;
}
- 整體代碼如下
import java.util.Arrays;
public class ReserveInteger {
public static int reserve(int x) {
long result = 0;
if(x>=0 && x<=2147483647) {
if (x > 0) {
char[] chars = String.valueOf(x).toCharArray();
char[] chars1 = new char[chars.length];
for (int i = 0; i <= chars.length - 1; i++) {
chars1[i] = chars[chars.length - 1 - i];
}
String str = new String(chars1);
result = Long.parseLong(str);
if( result > 2147483647){
return 0;
} else {
return (int)result;
}
}
else if (x < 0 && x >= -2147483648) {
char[] chars = String.valueOf(x).toCharArray();
char[] chars1 = new char[chars.length];
for (int i = 0; i <= chars.length - 1; i++) {
chars1[i] = chars[chars.length - 1 - i];
}
char[] chars2 = Arrays.copyOfRange(chars1, 0, chars1.length - 1);
String str = new String(chars2);
result = Long.parseLong(str);
if( result < -2147483648){
return 0;
} else {
return (int)result;
}
} else {
return 0;
}
} else {
return 0;
}
}
public static void main (String[]args){
int a = -2147483412;
System.out.println(reserve(a));
}
}
😊本人演算法小白一個,記錄一下自己的學習程序,大佬輕噴,歡迎大家評論區討論??
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/301959.html
標籤:其他
上一篇:關于Visual Studio相關軟體(本文采用Visual Studio2019舉例)二次安裝時,無法更改安裝路徑的解決辦法之一
