生成回文数

首页 » 算法 » 生成回文数

所谓回文数就是左右对称的数字,比如:
585,5885,123321…
当然,单个的数字也可以算作是对称的。

小明发现了一种生成回文数的方法:
比如,取数字19,把它与自己的翻转数相加:
19 + 91 = 110,如果不是回文数,就再进行这个过程:
110 + 011 = 121 这次是回文数了。

200以内的数字中,绝大多数都可以在30步以内变成回文数,只有一个数字很特殊,就算迭代了1000次,它还是顽固地拒绝回文

注意: 这个题会错的唯一原因就是类型转换会造成存储长度的异常. 所以我使用的是BigInteger

package six_jue;
 
import java.math.BigInteger;
 
public class 生成回文树 {
	static int ij;
	static void dg(BigInteger i,int count) {
		String s=String.valueOf(i);
		String h="";
		String q="";
		for(int j=s.length()/2-1;j>=0;j--) {
			q+=s.charAt(j)+"";
		}
		int len=s.length()/2+(s.length()%2==0?0:1);
		//偶奇数截取子串
		h=s.substring(len);
		if(h.equals(q))
			return;
		if(count>30) {
			System.out.println(ij);
			return;
		}
			String f="";
			//反转字符串
			for(int k=s.length()-1;k>=0;k--) {
				f+=s.charAt(k);
			}
			//原字符串与反转字符串相加
			BigInteger sum=new BigInteger(f).add(i);
			dg(sum,++count);
		}
public static void main(String[] args) {
for(ij=10;ij<=200;ij++) {
	dg(BigInteger.valueOf(ij),0);
}
}
}
 
分享到:
赞(0) 打赏

评论 7

评论前必须登录!

 

  1. #1

    以后多发点哦

    靓妹6个月前 (03-27)
  2. #2

    我也是小白以后多多交流

    中国加油小子6个月前 (03-27)
  3. #3

    我也是学计算机的

    我也是渣渣6个月前 (03-27)
  4. #4

    good厉害了

    小蚯蚓6个月前 (03-28)
  5. #5

    我给你点赞了

    靓妹6个月前 (03-28)
  6. #6

    good厉害了

    我是你哥6个月前 (03-28)
  7. #7

    还可以

    笨鸟先飞4个月前 (05-26)

觉得文章有用就打赏一下弟弟吧

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.5主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
正在播放:

作者想对您说:

累了就停下来听首歌吧

听完后会给您一个好心情

最后

等到您不容易

还希望您能多待一会儿

      00:00/00:00