判断是否为回文结构的三种方法

第一种(变换类型)

我们把用户输入的int类型数据转换成String字符串,再通过逆序,进行比较。

pubic static boolean isCircle(int x){
	String revX = (new StringBuilder(x + ””).reverse().toString();
	return (x + “”).equals(revx);
}

至于为什么要使用x + ‘’’’,int类型的数据+‘’‘’可以转换为String类型的数据,记住就习惯了

第二种(先获取用户输入值的位数,找到最左值和最右值,比较两者是否相同,如果都相同了,为回文结构)

public static boolean isCircle(int x){
		//	如果输入的值小于0,肯定不为回文结构
        if(x < 0){
            return false;
        }
        int div = 1;
        //统计位数
        while(x/div >= 10){
            div *= 10;
        }
        //逐个对比左右两值
        while(x > 0){
            int left = x /div;
            int right = x % 10;
            if(left != right){
                return false;
            }
            x = (x % div)/10;
            div /= 100;
        }
        return true;
    }
}

第三种(manacher算法,该算法就是如果是回文结构,肯定存在后半部分和前半部分相同)

public static boolean isCircle(int x){
	//rex为后半部分新生成的数据
	int rex = 0;
	//div用来位数变换
	int div = 10;
	//这里体会一下,如果末尾数字是0,肯定不会是回文结构的(开头第一个数字怎么可能是0?
	if(x == 0 || x%10 == 0 && x != 0 ){
		return false;
	}
	//x之所以要大于rex,是因为如果是单数长度的数字,要把中间的数留给x才会比对成功。
	while(x > rex){
		rex = res*10 + x%div;
		div *= 10;
	}
	//x == rex/10,就是因为x可能比rex少一位
	return x == rex || x == rex/10;
}

如果还有什么想法,可以留言评论~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值