java 吸血鬼数字_用java求吸血鬼数字 | 学步园
吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,而这对数字各包含乘积的一
半位数的数字,其中从最初的数字中选取的数字可以任意排序。以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求吸血鬼数字 | 学步园相关推荐
- java runnable 匿名_匿名类实现Runnable接口 | 学步园
15.2.3 使用Runnable接口 我们知道,Java中的类只能够是单继承,也就是说,如果一个类为了使用线程而继承了Thread类,它就不能再继承别的类了.这很可能给编程带来不便.本节中介绍的就 ...
- java求最后一位不为0的数字_【Java】 剑指offer(62) 圆圈中最后剩下的数字
本文参考自<剑指offer>一书,代码采用Java语言. 题目 0, 1, -, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字 ...
- java输入一行_用java编写从标准输入读入一行字符串,打印出其中所有的数字
用java编写从标准输入读入一行字符串,打印出其中所有的数字 关注:211 答案:1 mip版 解决时间 2021-01-13 10:00 提问者童話被染上了傷 2021-01-12 17:23 ...
- java判断string是数字_(转)java判断string变量是否是数字的六种方法小结
1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ ...
- java输入数字_在java中,如何从键盘中输入数字,字符,字符串
java不像C中拥有scanf这样功能强大的函数,大多是通过定义输入输出流对象. 常用的类有BufferedReader,Scanner. 实例程序: 一,利用 Scanner 实现从键盘读入inte ...
- 逻辑 java 猜心术_如何玩简单的数字猜心术
如何玩简单的数字猜心术 | How百科 | 兴趣与手艺www.wgsng.com 用这些数字猜心术惊艳你的亲朋好友吧!这三个把戏从易到难排列(最小数到最大数).就算是小孩子也能做这个简单的数字预测把 ...
- java 分割一个_分割java
[java]分割字符串工具类,霸气 jdk自带的 java 分割字符串,分割string,可以根据多个条件去分割.比如逗号,分号,逗号或者分号. 比如一个字符串:"abc,def;gh,ij ...
- java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)
import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...
- java核心教程_核心Java教程
java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...
最新文章
- liunx 上get 不到url参数 java_thinkphp5.0 模板上直接获取url参数
- 数据库增长到一定程度后的瘦身,优化问题
- js中typeof用法详细介绍
- BinaryTree with C#
- websphere 内存溢出处理
- RxSwift之深入解析map操作符的底层实现
- 14.cookie与自动登陆
- 澳元兑美元震荡整理,后市可否追高
- Xshell设置密钥登录CentOS6.5_64位(图文版)
- Red Hat 发布新 logo:“没有脸了”
- java复杂的代码做程序_摆脱复杂烧脑的程序代码,利用快速开发平台轻轻松松做软件...
- 数据采集及采集工具八爪鱼的使用
- Android开发--MVP demo+Jsoup在线小说阅读器(一)
- VMware要不要装在固态SSD上,虚拟机系统文件要不要放固态SSD上,虚拟机伤不伤固态SSD...
- 永中集成Office要敢于继续挑战微软Office
- Python 之字典(dict)根据 value 获取 key
- 劳务php源码,php学校劳务酬金系统
- 【VBA研究】调用API实现汉字简繁互换
- 优秀的论文答辩PPT模板值得被应用
- 2018计算机三级网络技术百度云,百度网盘2018旧版