JAVA面试6174问题。
程序员文章站
2024-03-22 19:38:42
...
假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从 1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!现在要你写一个 程序来判断一个四位数经过多少次这样的操作能出现循环,并且求出操作的次数
比如输入1234
输出是1234->3087->8352->6174->6174
package com.mkyong.common.util; import java.util.Arrays; public class TestMain { /** * @param args */ public static void main(String[] args) { int num = 1234; int dif = 0; StringBuilder sb = new StringBuilder(); while (true) { dif = getDif(num); if (num == dif) { sb.append(num + "->" + num); break; } else { sb.append(num + "->"); num = dif; } } System.out.println(sb); } private static int getDif(int num) { Integer[] numArray = new Integer[4]; numArray[0] = num % 10; numArray[1] = num / 10 % 10; numArray[2] = num / 100 % 10; numArray[3] = num / 1000 % 10; Arrays.sort(numArray); int dif = (numArray[3] - numArray[0]) * 1000 + (numArray[2] - numArray[1]) * 100 + (numArray[1] - numArray[2]) * 10 + (numArray[0] - numArray[3]); return dif; } }
推荐阅读
-
JAVA面试6174问题。
-
zip版tomcat(6,7)不能注册成windows服务或者注册后不能启动的问题解决 博客分类: Java其他分类微服务数据库
-
JAVA面试智力题 博客分类: JAVA面试智力题 JAVA面试智力题
-
oracle的JDBC使用preparedStatement处理char类型字段的问题 博客分类: java JDBCOracleHibernateSQLSQL Server
-
sqlserver 2000 1433 端口未打开的问题 博客分类: Java
-
java 运行版本问题 博客分类: Java JavaJDK
-
我的一次weblogic 8升级到weblogic9遇到的问题. 博客分类: Java WeblogicJSPJDBCMicrosoftEJB
-
sqlserver 2000 1433 端口未打开的问题 博客分类: Java
-
大数据云计算——hadoop的面试问题总结
-
【Java面试题】合并链表