力扣09 判斷一個數是否是回文數
題目:
給你一個整數 x ,如果 x 是一個回文整數,回傳 true ;否則,回傳 false ,
回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數,
- 例如,
121是回文,而123不是,
示例 1:
輸入:x = 121
輸出:true
示例 2:
輸入:x = -121
輸出:false
解釋:從左向右讀, 為 -121 , 從右向左讀, 為 121- ,因此它不是一個回文數,
示例 3:
輸入:x = 10
輸出:false
解釋:從右向左讀, 為 01 ,因此它不是一個回文數,
解法一:
解題思路:
可以先將數字轉化為字串型別然后借鑒雙指標的思想(左右指標),一個左指標一個右指標分別從兩頭往中間走并判斷兩個指標所指的值是否相等如果相等就是回文數反之則不是,
代碼:
/**
* 給定一個數字判定它是否是回文數,所謂回文數就是從左往右讀與從右往左讀都是一樣
* 例如:121
*/
public class IsHuiWenNum01 {
//1.定義一個方法判定這個數字是否是回文數,回傳值為boolean型別,引數為int
public static Boolean isHuiWenNum(int number){
//2.如果它是負數肯定就不是回文數
if(number < 0){
return false;
}
//2.1將這個數字轉化為字串
String s = Integer.toString(number);
//2.2我們可以使用雙指標(左右指標)一個左指標一個右指標分別往中間走并判定這兩個雙指標是否相等
int left = 0;
int right = s.length()-1;
//3.進行回圈左右指標往中間走
while (left <= right){
//3.1判斷左右指標是否相等
if(s.charAt(left) != s.charAt(right)){
return false;
}
left ++;
right --;
}
return true;
}
}
解法二:
解題思路:
我們可以將給定的數字變換成它完全翻到過來的數字再判斷與原來的數字是否相等如果相等就是回文數反之不是,
代碼:
/**
* 不轉換為字串我們將這個數字想辦法變成它從右往左讀的數再與原來的數進行比較如果相等那么原來的這個數就是回文數
* 例如:123 要先右一個中間量來作為過度假如為 x = 0
* 第一步我們先取出各位上的數字:123 % 10 =3 2 1
* 第二步更新x的值為: x = x * 10 + 3 = 3 32 321
* 第三步取出除各位上的以外的數: 123 / 10 = 12 1 0
* 重復這三步驟直到第三步為0最后x的值就是原來數倒過來的數
*/
public class IsHuiWenNum02 {
//1.定義一個方法回傳值為boolean型別引數為int型別
public static Boolean isHuiWenNum(int num){
//2.定義一個中間變數作為過度,定義一個變數作為num的中間量
int a = num;
int betweenNum = 0;
while (a != 0){
int lastNum = a % 10;
betweenNum = betweenNum * 10 + lastNum;
a = a / 10;
}
return betweenNum == num;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/539036.html
標籤:其他
下一篇:Serverless Devs 重大更新,基于 Serverless 架構的 CI/CD 框架:Serverless-cd
