首页 > 代码库 > 【Java】 Thinking in Java 4.8 练习10 吸血鬼数字
【Java】 Thinking in Java 4.8 练习10 吸血鬼数字
题目:
吸血鬼数字是指位数为偶数的数字,可以有一对数字相乘得到,而这对数字各包含成绩的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。
以两个0结尾的数字是不允许的。写一个程序,找出4位数中所有吸血鬼数字。
方法一:
1 public static void main(String[] args) { 2 outer: for (int i = 10; i <= 99; i++) { 3 for (int j = i + 1; j <= 99; j++) { 4 int sum = i * j; 5 if (sum <= 9999 && sum >= 1000) { 6 String[] t1 = (sum + "").split(""); 7 Arrays.sort(t1); 8 String[] t2 = ("" + i + j).split(""); 9 Arrays.sort(t2);10 if (Arrays.equals(t1, t2)) {11 System.out.println(i + "*" + j + "=" + sum);12 }13 break outer;14 }15 }16 }17 }
方法二:
1 public static void main(String[] args) { 2 ArrayList<Integer> list = new ArrayList<Integer>(); // 提高效率所引用线性表 3 ArrayList<Integer> result = new ArrayList<Integer>(); // 防止结果集重复 4 boolean test = true; 5 boolean flag = false; 6 for (int i = 11; i < 99; i++) 7 for (int j = (1000 / i) + 1; j < 99; j++) { 8 list.clear(); 9 String str1 = new Integer(i * j).toString(); // 相乘后10 String str2 = String.valueOf(i) + String.valueOf(j);11 for (int m = 0; m < 4; m++) {12 for (int n = 0; n < 4; n++) {13 test = true;14 for (int x = 0; x < list.size(); x++)15 if (n == list.get(x))16 test = false; // 如果表中存在索引17 if (test == false)18 continue;19 if (str1.charAt(m) == str2.charAt(n)) {20 list.add(n);21 break;22 }23 }24 }25 if (list.size() == 4) {26 flag = true;27 for (int count = 0; count < result.size(); count++) {28 if (result.get(count) == i * j) {29 flag = false;30 }31 }32 if (flag != false) {33 System.out.println(i * j + "=" + i + "*" + j);34 result.add(i * j);35 }36 }37 }38 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。