吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,而这对数字各包含乘积的一

半位数的数字,其中从最初的数字中选取的数字可以任意排序。以2个0结尾的数字是不允许

的,例如,下列数字都是吸血鬼数字:

1260 = 21*60

1827 =21*87

2187 =27*81

写该程序的思想是:

1.首先找到满足这个等式的3个数,然后再从其中选出是吸血鬼数字的数字。下面的vampire

函数就是先找出这样的等式,然后调用CompareString()函数来判断是否是吸血鬼数字。

public static void Vampire()

{

for(int i =999;i<9999;i++)

{

if((i%100) == 0) continue;

for(int j=11;j<100;j++)

for(int k =11;k

{

if(j*k == i)

{

String si ="" +i;

String sj ="" +j;

String sk ="" +k;

if(CompareString(si,sj,sk))

{

System.out.println(si +" =" +sj +"*"+sk);

}

}

}

}

}

2.调用CompareString()函数有3个String参数,分别表示是乘积,乘数,乘数。在进行判断时,将2个乘数变为一个String再和乘积进行比较。比较过程中使用了一个Sort()的排序函数。

public static boolean CompareString(String target,String str1,String str2)

{

int count = 0;

String StrTemp = str1 + str2;

char s1[] =target.toCharArray();

char s2[] = StrTemp.toCharArray();

Sort(s1);

Sort(s2);

for(int i =0;i

{

if(s1[i] == s2[i])

{

count++;

}

}

if(count == s1.length) return true; // 如果每一位都对应相同,则返回true;否则为false

else return false;

}

3.Sort()函数的作用将char数组中的数字,按照从小到大的顺序进行排列。如一个char数组为{'1','2','6','0'}则经过Sort()函数变为{'0','1','2','6'}.所以最后比较是否为吸血鬼数字,就是比较2个字符串经过排序后是否一样。其实2个乘数组合的字符串与乘积的字符串只是字母顺序不一样。经过排序后,就可以很好的比较了。

public static void Sort(char[] numArray)

{

int length = 0;

length = numArray.length;

for(int i =1; i

{

int j = i -1;

char Temp = numArray[i];

while(j>=0&&Temp

{

numArray[j+1] = numArray[j];

j--;

}

numArray[j+1] = Temp;

}

}

到此,就可以进行判断是否为吸血鬼数字了。

通过求吸血鬼数字,有一个很重要的思想对于如求类似的问题。如:

String s1 = "abcdsddgff";

String s2 = "ddfgfascdb";

要判断这2个字符串是否含有相同的字母,并且对于同一字母个数是否相同,就可以应用本思想。可以先将字符串排序后,再来进行比较。排序后s1变为abcdddffgs,s2变为abcdddffgs,则可以很容易比较了。至于排序算法,可以有很多选择。

java 吸血鬼数字_用java求吸血鬼数字 | 学步园相关推荐

  1. java runnable 匿名_匿名类实现Runnable接口 | 学步园

    15.2.3  使用Runnable接口 我们知道,Java中的类只能够是单继承,也就是说,如果一个类为了使用线程而继承了Thread类,它就不能再继承别的类了.这很可能给编程带来不便.本节中介绍的就 ...

  2. java求最后一位不为0的数字_【Java】 剑指offer(62) 圆圈中最后剩下的数字

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 0, 1, -, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字 ...

  3. java输入一行_用java编写从标准输入读入一行字符串,打印出其中所有的数字

    用java编写从标准输入读入一行字符串,打印出其中所有的数字 关注:211  答案:1  mip版 解决时间 2021-01-13 10:00 提问者童話被染上了傷 2021-01-12 17:23 ...

  4. java判断string是数字_(转)java判断string变量是否是数字的六种方法小结

    1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ ...

  5. java输入数字_在java中,如何从键盘中输入数字,字符,字符串

    java不像C中拥有scanf这样功能强大的函数,大多是通过定义输入输出流对象. 常用的类有BufferedReader,Scanner. 实例程序: 一,利用 Scanner 实现从键盘读入inte ...

  6. 逻辑 java 猜心术_如何玩简单的数字猜心术

    如何玩简单的数字猜心术 | How百科 | 兴趣与手艺​www.wgsng.com 用这些数字猜心术惊艳你的亲朋好友吧!这三个把戏从易到难排列(最小数到最大数).就算是小孩子也能做这个简单的数字预测把 ...

  7. java 分割一个_分割java

    [java]分割字符串工具类,霸气 jdk自带的 java 分割字符串,分割string,可以根据多个条件去分割.比如逗号,分号,逗号或者分号. 比如一个字符串:"abc,def;gh,ij ...

  8. java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)

    import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...

  9. java核心教程_核心Java教程

    java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...

最新文章

  1. liunx 上get 不到url参数 java_thinkphp5.0 模板上直接获取url参数
  2. 数据库增长到一定程度后的瘦身,优化问题
  3. js中typeof用法详细介绍
  4. BinaryTree with C#
  5. websphere 内存溢出处理
  6. RxSwift之深入解析map操作符的底层实现
  7. 14.cookie与自动登陆
  8. 澳元兑美元震荡整理,后市可否追高
  9. Xshell设置密钥登录CentOS6.5_64位(图文版)
  10. Red Hat 发布新 logo:“没有脸了”
  11. java复杂的代码做程序_摆脱复杂烧脑的程序代码,利用快速开发平台轻轻松松做软件...
  12. 数据采集及采集工具八爪鱼的使用
  13. Android开发--MVP demo+Jsoup在线小说阅读器(一)
  14. VMware要不要装在固态SSD上,虚拟机系统文件要不要放固态SSD上,虚拟机伤不伤固态SSD...
  15. 永中集成Office要敢于继续挑战微软Office
  16. Python 之字典(dict)根据 value 获取 key
  17. 劳务php源码,php学校劳务酬金系统
  18. 【VBA研究】调用API实现汉字简繁互换
  19. 优秀的论文答辩PPT模板值得被应用
  20. 2018计算机三级网络技术百度云,百度网盘2018旧版

热门文章

  1. 即将迎来M2的 MacBook Pro升级款 M2 Pro版本MacBook Pro或将于2023年3月发布
  2. matlab 画多个箱线图
  3. 科技云报道:腾“云”驾“数”,制造业数字化升级进行时
  4. 目标检测中的precision,recall,AP,mAP计算详解
  5. 无处不在的内存泄漏-苹果BUG?
  6. 汽车行业,怎么样通过论坛快速引流?
  7. 【OpenCV图像处理】五、图像的几何变换(下)
  8. 手推向量投影长度、投影向量
  9. Excel表格标题重复打印
  10. 安装opensuse的笔记-重庆linux开源组织