您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法

回文数(图文)

第十三双眼睛2023-11-21【数据结构与算法】人已围观

简介回文数
给你一个整数x,如果它是一个回文数,返回true,如果不是,返回false,回文数是指正向和反向都是一样的数

最简单也是最容易想到的方法,就是转成字符串以后,进行倒叙,和原来的字符串进行比较,如果一样,就说明是回文数,如果不一样,就说明不是。代码如下:
public boolean method1(int x) {
    String s = x + "";
    return new StringBuilder(s).reverse().toString().equals(s);
}

第二种方法就是用两个指针,一个从头部向后面移动,一个从后面向前移动,进行比较,比如,第一个字符和最后一个字符进行比较,如果相同,前面的指针后移,后面的指针前移,直到比较完,或者遇到不等的。代码如下:
public boolean method2(int x) {
    boolean flag = true;
    String s = x + "";
    char[] chars = s.toCharArray();
    int start = 0;
    int end = chars.length - 1;
    while (start <= end) {
        if (chars[start] == chars[end]) {
            start ++;
            end --;
        } else {
            flag = false;
            break;
        }
    }
    return flag;
}

第三种方法也是最快捷的,也是最好的,首先判断该数是否为复数,复数的话就不是回文数,再判断该数最后一位是不是0,如果是0的话就不是回文数,否则进行下面的判断,按照数的位数进行取数,如果是偶数位,就取一半,比如1234554321,此数是10位数,将后5位数取下来组成一个新的数54321,和前五位进行比较,如果是奇数位,比如123454321,就取后4位下来和前四位进行比较,比如1234。代码如下:
public boolean method3(int x) {
    if (x < 0 || (x % 10 ==0 && x != 0)) {
        return false;
    }
    int reverseNum = 0;
    while (x > reverseNum) {
        reverseNum = reverseNum * 10 + x % 10;
        x = x / 10;
    }
    return reverseNum == x || reverseNum / 10 == x;
}



 

Tags:

很赞哦! ()

文章评论

    共有条评论来说两句吧...

    用户名:

    验证码:

本站推荐

站点信息

  • 网站名称:JavaStudy
  • 建站时间:2019-1-14
  • 网站程序:帝国CMS7.5
  • 文章统计242篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我们