1. 程式人生 > 實用技巧 >迴文數

迴文數

迴文數定義

設n是一任意自然數。若將n的各位數字反向排列所得自然數n1與n相等,則稱n為一回文數。

例如,若n=1234321,則稱n為一回文數,同理,124421也是迴文數。

演算法:

  //是否是迴文數   12321 true;  12344 false;
1、常見的判斷一個數為迴文數的演算法一般需要把一個數轉為字串形式,後從兩邊開始按下標讀取每個數字並比較兩個數字是否相同。
  public static boolean isPalindrome(int x){
    if(x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }
    char[] array = String.valueOf(x).toCharArray();

    int left = 0; right = array.length-1;
    while (left < right) {
       if (array[left] != array[right]) {
          return false;
        }

left++; right--;
     }
      
return true; }


2、將int的字串翻轉,然後判斷翻轉後的字串和原串是否相等。

  public
static boolean isP2(int x){
     if(x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }
     char[] charArray = String.valueOf(x).toCharArray();
        String str = "";
        for(int i = charArray.length-1; i >= 0; i--){
            str = str + String.valueOf(charArray[i]);
            System.out.println(str);
        }
        
if(str.equals(String.valueOf(x))){ return true; }else{ return false; } }

3、演算法基於int不需要完整遍歷這個數一次。其思路為:假設需要判斷的數為x,用一個名為back的數儲存x後半段的數並且翻轉,
最後再比較x的前半段與後半段back是否相等即可。

public static boolean isP3(int x){ if(x < 0 || (x % 10 == 0 && x != 0)) { return false; } int back = 0; while(x > back) { back = back * 10 + x % 10; x = x / 10; } if(x == back || x == back/10){ return true; }else{ return false; } }