有时候,将数据的比较转换成字符串比较会更加直观。
请大家看下面的
例子--实现
吸血鬼数。
所谓“
吸血鬼数字”就是指位数为偶数的数字),可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数字。
class="java">package my.example.numbers;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
*
* @author Eric
*
*/
public class VampireNumberExample1 {
public static void main(String[] args) {
/**
* 为了能够是去除相同的吸血鬼数。 比如: 21 x 60 = 1260 = 60 x 21
*
*/
List<Integer> uniqueVampireNumber = new ArrayList<Integer>();
for (int i = 10; i <= 99; i++) {
for (int j = 10; j <= 99; j++) {
int sum = i * j;
if (sum >= 1000 && sum <= 9999) {
String[] str = String.valueOf(sum).split("");
Arrays.sort(str); // 按照字符的升序排列
String[] str1 = (String.valueOf(i) + String.valueOf(j))
.split("");
Arrays.sort(str1); // 对两个Arrays进行比较
if (Arrays.equals(str, str1)) {
if (!uniqueVampireNumber.contains(sum)) {
uniqueVampireNumber.add(sum);
System.out.printf("第%d组:%d + %d = %d\n",
uniqueVampireNumber.size(), i, j, sum);
}
}
}
}
}
}
}
输出结果:
第1组:15 + 93 = 1395
第2组:21 + 60 = 1260
第3组:21 + 87 = 1827
第4组:27 + 81 = 2187
第5组:30 + 51 = 1530
第6组:35 + 41 = 1435
第7组:80 + 86 = 6880
转载请注明:http://www.wangmengjun.com/showArticleDetail.do?articleId=40