thinking in Java 里的有个求吸血鬼数字的题目
各位有什么好办法  发来大家讨论下

解决方案 »

  1.   

    http://topic.csdn.net/u/20090302/19/79fb2477-5ac8-4d98-b62e-00eefa0cb230.html
    这里有人问过,而且也被高人解答过
      

  2.   

    某高人解答:
    public static void main(String[] args) {
            Calendar calendar = Calendar.getInstance(Locale.CHINA);
            calendar.add(Calendar.MONTH, -1);
            System.out.println(calendar);
            for (int i=1593; i<9999; i++) {
                String str = String.valueOf(i);
                String[] strSz = new String[4];
                for(int j = 0; j < str.length(); j++){
                    String str1 = str.substring(j, j + 1);
                    strSz[j] = str1;
                }
                String start = str.substring(0, 2);
                String end = str.substring(2);
                int num1 = Integer.parseInt(start);
                int num2 = Integer.parseInt(end);
                int s = num1 * num2;
                String newStr = Integer.toString(s);
                if(newStr.length() == 4){
                    if(newStr.endsWith("00")){
                        continue;
                    } else if(sfcz(strSz, newStr)){
                        System.out.println(num1 + " " + num2 + " = " + s);
                    }
                }
            }
        }
        
        private static boolean sfcz(String[] str, String newStr){
            for(int i = 0; i < str.length; i++){
                String stri = str[i];
                if(newStr.contains(stri)){
                    newStr = newStr.replace(stri, "");
                } else {
                    return false;
                }
            }
            return true;
        }
      

  3.   

    《thinking in Java》这本书还是满深奥的!费解啊
      

  4.   

    把题目上一下么。。
    我thinking不在手边啊
      

  5.   

    我写的一个是有参数的,根据参数指定多少位的吸血鬼数字
    如 :
    methods(int  i){   //i 为偶数
         if(i / 2  != 0)  return ;
         ..............        // 根据 i 构造 i 位 的数字
        后便调用下边的求兄弟字符串方法
        分割返回的字符转成 数字 再判断是否符合条件
     }  //代码在我自己家的机子里  楼主要的话给我留个邮箱我把参数用String 传进去  返回它的兄弟字符串
    再把返回的字符串切成2段转成数字判断
    下边是求兄弟字符串的代码,用的是递归 效率估计不怎么好 完全是为了实现功能凑出来的 呵呵
    public class Test {
     private String string ;
     public Test(String string) {
      this.string = string;
     }
     public String getString() {
      return string;
     }
     public Set<String> getStrings(String s) {
      Set<String> set = new HashSet<String>();
      int temp = s.length();
      int temp2 = temp - 1;
      if (temp == 1) {
       set.add(s);
      } else {
       char c = s.charAt(0);
       for (String s1 : getStrings(s.substring(1, temp))) {
        for (int i = 0; i <= temp2; i++) {
         set.add(s1.substring(0, i) + c + s1.substring(i, temp2));
        }
       }
      }
      return set;
     }
    }