zoukankan      html  css  js  c++  java
  • 回文数

    回文数定义

    设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; } }

  • 相关阅读:
    Finder 的分栏显示模式宽度调整
    IBAction作用相当于void,NSLog(@"被调用的方法名是%s",__func__);
    Trapping Rain Water
    Binary Tree Preorder Traversal
    Valid Parentheses
    Reverse Words in a String | LeetCode OJ | C++
    Gas Station|leetcode 贪心
    两个字符串“相等”
    Binary Tree Zigzag Level Order Traversal
    Add Binary
  • 原文地址:https://www.cnblogs.com/linghu-java/p/13963610.html
Copyright © 2011-2022 走看看