import java.util.Vector;
import static java.lang.Math.pow;
public class ReverseInteger_7 {
/**
* 將數字分解,裝到vector中,
* 從vector中轉換爲數字,length<10可直接組裝,length = 10;需要進行判斷
* @param x
* @return
*/
public static int reverse(int x) {
boolean flag = false;
if (x > 0){
flag = true;
}
Vector<Integer> vector = integerToVec(x);
int vecLen = vector.size();
if(vecLen < 10){
// 可以帶着符號直接輸出
return vectorToInteger(vector);
}
int[] intUtil ={2,1,4,7,4,8,3,6,4};
if(vecLen == 10) {
if (Math.abs(vector.get(0)) > 2) {
return 0;
} else if (Math.abs(vector.get(0)) < 2) {
return vectorToInteger(vector);
} else {
if (Math.abs((vector.get(1))) > 1) {
return 0;
} else if (Math.abs((vector.get(1))) < 1) {
return vectorToInteger(vector);
} else {
if (Math.abs((vector.get(2))) > 4) {
return 0;
} else if (Math.abs((vector.get(2))) < 4) {
return vectorToInteger(vector);
} else {
if (Math.abs((vector.get(3))) > 7) {
return 0;
} else if (Math.abs((vector.get(3))) < 7) {
return vectorToInteger(vector);
} else {
if (Math.abs((vector.get(4))) > 4) {
return 0;
} else if (Math.abs((vector.get(4))) < 4) {
return vectorToInteger(vector);
} else {
if (Math.abs((vector.get(5))) > 8) {
return 0;
} else if (Math.abs((vector.get(5))) < 8) {
return vectorToInteger(vector);
} else {
if (Math.abs((vector.get(6))) > 3) {
return 0;
} else if (Math.abs((vector.get(6))) < 3) {
return vectorToInteger(vector);
} else {
if (Math.abs((vector.get(7))) > 6) {
return 0;
} else if (Math.abs((vector.get(7))) < 6) {
return vectorToInteger(vector);
} else {
if (Math.abs((vector.get(8))) > 4) {
return 0;
} else if (Math.abs((vector.get(8))) < 4) {
return vectorToInteger(vector);
} else {
if ((flag == true && vector.get(9) > 7) || (flag == false && vector.get(9) > 8)) {
return 0;
} else if ((flag == true && vector.get(9) <= 7) || (flag == false && vector.get(9) <= 8)) {
return vectorToInteger(vector);
}
}
}
}
}
}
}
}
}
}
}
return 0;
}
public static Vector<Integer> integerToVec(int x){
Vector<Integer> vector = new Vector<>();
while(true) {
vector.add(x % 10);
x = x / 10;
if(x == 0){
break;
}
}
return vector;
}
public static Integer vectorToInteger(Vector<Integer> vector){
int vecLen = vector.size();
Integer sum = 0;
int i =0;
while (vecLen != 0){
sum += new Double(vector.get(i++) * pow(10, vecLen - 1)).intValue();
--vecLen;
}
return sum;
}
public static void main(String[] args){
// ReverseInteger_7 reverseInteger_7 = new ReverseInteger_7();
System.out.println(reverse(1463847412));
}
}
leetcode Reverse Integer 反轉數字 第七題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.