编辑

【暴力】002 猜年龄

2019-11-12 2019-11-15 102 2 ---【暴力破解】 Hoji

一、题目

该年龄的立方是个 4 位数。我年龄的 4 次方是个 6 位数。这 10 个数字正好包含了从 0 到 9 这 10 个数字,每个都恰好出现 1 次。” 请你推算一下,他当时到底有多年轻。


二、思路

这题看上去不容易,但是仔细思考,发现暴力破解还是挺简单的。

(1)暴力破解的基本框架

for(int i=0; i<100; i++){    
  s1 = 四次方,s2 = 六次方  
  if(test(s1, s2)==false) 
	 continue;    
  print(i); 
}

(2)检查重复

第一种思路是建立一个包含十个元素的数组,检测 0-9 每个数字出现的次数。这种

第二种思路检测 0-9 是否在前面得到的串中

第三种思路就是用一个 HashSet 存储 s1、s2 的每一个字符,最后判断 set 中的大小是否为 10(题目:从 0 到 9 这 10 个数字,每个都恰好出现 1 次)。

这里演示第三种思路:

import java.util.HashSet;
public class 猜年龄 {
  public static void main(String[] args) {
    int a,b;
    for(int i = 1; i < 30; ++i) {
      a = i * i * i;
      b = a * i;
      if((a + "").length() != 4 || (b + "").length() != 6)  continue;
      if(check(a+"", b+"")) { System.out.println(i); }
    }
  }
  static boolean check(String s1, String s2) {
    HashSet<Character> set = new HashSet<>();
    for(int i = 0; i < s1.length(); i++) {
      set.add(s1.charAt(i));
    }
    for(int j = 0; j < s2.length(); j++) {
      set.add(s2.charAt(j));
    }
    return set.size() == 10;
  }
}



Hoji的CSDN(其中不乏各种框架教程、学习方法..) https://blog.csdn.net/qq_43539599

倘若小文于你有益,欢迎
  • 如果您的提问博主没能及时回复,通过分享文章获得援助,何尝不是一种查缺补漏的好做法
  • 版权声明:本文为博主原创文章,遵循CC 4.0 BY版权协议
  • 文章转载:请在文末添加原文章地址,这也是尊重他人劳动成果的一点体现,谢谢您的配合!
  • 评论信息 (注:评论收到回复后,会以邮箱的方式提醒您;您的邮箱不会显示到页面中)

    验证码信息 看不清?点击图片进行切换!
    精彩随处可见 更多精彩内容
    作者: 浏览 61 评论 1 赞 1 2020-01-15
    作者: 浏览 62 评论 1 赞 1 2019-11-29
    作者: 浏览 83 评论 1 赞 1 2019-11-29
    作者: 浏览 54 评论 1 赞 1 2019-11-29
    作者: 浏览 52 评论 1 赞 1 2019-11-29
    目录