《java编程思想》读后笔记:二,吸血鬼数字
书本p75中一道读后练习思考题,题目如下:
吸血鬼数字是指位数为偶数的数字,可以有一对数字相乘得到,而这对数字各包含成绩的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。一两个0结尾的数字是不允许的,例如,下列数字都是“吸血鬼数字”:
1260=21*60,1827=21*87,2187=27*81
写一个程序,找出4位数的所有吸血鬼数字。
个人代码:
public static void main(String[] args) {
Map<String,String> map = new HashMap<String,String>();
for (Integer i = 10; i < 100; i++) { //两个数一定都是两位数
for (Integer j = 10; j < 100; j++) {
Integer total = i * j; //计算乘积
if(total>999 && total<10000){ //判断是否是4位数
String totalStr = total.toString(); //将当前数字转成字符串
if(total % 100 != 0){ //排除以两个0结尾的情况
String iStr = i.toString();
String jStr = j.toString();
String ijStr = iStr + jStr; //将当前俩个数拼成4个字符的字符串
List<Character> list = new ArrayList<Character>();
for(int x=0;x<totalStr.length();x++){
list.add(totalStr.charAt(x)); //将两数乘积的四个数字放入list中
}
int state = 0;
for(int x=0;x<ijStr.length();x++){
if(list.contains(ijStr.charAt(x))){ //遍历两数组成的字符串每个数字
int indexX = list.indexOf(ijStr.charAt(x)); //当list中含有当前数字时,从list中删除当前数字字符
list.remove(indexX); //并且记录重复数字
state ++;
}
}
if(state == 4){
String resultStr = totalStr + " = " + iStr + "*" + jStr; //state==4说明,乘积中含有两个数组成的所有数字字符
map.put(totalStr, resultStr); //以乘积为key,等式为value存入,达到去重效果
}
}
}
}
}
Set<String> keySet = map.keySet();
for(String key:keySet){
System.out.println(map.get(key)); //打印结果
}
}
输出结果:
1435 = 41*35
1260 = 60*21
2187 = 81*27
1395 = 93*15
1530 = 51*30
6880 = 86*80
1827 = 87*21
我的解决代码如上,暂时还没想到更简便的解决方案,如果朋友感兴趣,可以多交流。
《java编程思想》读后笔记:二,吸血鬼数字的更多相关文章
- Java编程思想学习(二) 操作符
1. 对象“赋值”:对一个对象进行操作时,我们真正操作的是对对象的引用.所以倘若“将一个对象赋值给另一个对象”,实际是将“引用”从一个地方复制到另一个地方.(引用于对象之间存在关联,但这种关联可以被改 ...
- Java编程思想学习(二)----一切都是对象
2.1用应用操作对象 String s; 这里所创建的只是引用,并不是对象.如果此时向s发送一个消息,就会返回一个运行时错误.这是因为此时s没有和任何事物关联.因此,一种安全的做法是:创建一个引用的同 ...
- Java编程思想之二 一切都是对象
2.1 用引用操作对象 每种编程语言都有自己的操作内存中元素的方式. 在Java中,一切都可以视为对象,因此可以采用单一的固定语法. 2.2 必须由你创建所有对象 一旦创建一个引用,就希望它能与一个新 ...
- Java编程思想(二)一切都是对象
2.1用句柄操纵对象 尽管一切都看作是对象,但是操纵的标识符实际上是指向一个对象的“句柄”(handdle): 拥有一个句柄并不表示必须有一个对象同他连接: String s: 这里创建的只是句 ...
- 《Java编程思想》读书笔记(二)
三年之前就买了<Java编程思想>这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第一章到第十章的内容,这一次记录的是第 ...
- 《Java编程思想》学习笔记(二)——类加载及执行顺序
<Java编程思想>学习笔记(二)--类加载及执行顺序 (这是很久之前写的,保存在印象笔记上,今天写在博客上.) 今天看Java编程思想,看到这样一道代码 //: OrderOfIniti ...
- 《Java编程思想》阅读笔记二
Java编程思想 这是一个通过对<Java编程思想>(Think in java)进行阅读同时对java内容查漏补缺的系列.一些基础的知识不会被罗列出来,这里只会列出一些程序员经常会忽略或 ...
- JAVA编程思想读书笔记(二)--容器
接上篇JAVA编程思想读书笔记(一) 第八章.对象的容纳 No1: java提供了四种类型的集合类:Vector(矢量).BitSet(位集).Stack(堆栈).Hashtable(散列表) No2 ...
- JAVA编程思想——分析阅读
需要源码.JDK1.6 .编码风格参考阿里java规约 7/12开始 有点意识到自己喜欢理论大而泛的模糊知识的学习,而不喜欢实践和细节的打磨,是因为粗心浮躁导致的么? cron表达式使用 设计能力.领 ...
- 《Java编程思想》阅读笔记一
Java编程思想 这是一个通过对<Java编程思想>(Think in java)第四版进行阅读同时对java内容查漏补缺的系列.一些基础的知识不会被罗列出来,这里只会列出一些程序员经常会 ...
随机推荐
- shell脚本安装ntp server 服务
##############################Deploy ntp server ######################## echo "start deploy ntp ...
- Mjpg_Streamer 的移植
1. 移植mjpg-streamer a.1 移植libjpeg tar zxf libjpeg-turbo-1.2.1.tar.gz cd libjpeg-turbo-1.2.1 ./configu ...
- 循环时的dom操作
<body> <div id="resText"></div> <div id="reshtml"></d ...
- Hibernate “N+1”查询问题
Hibernate 默认情况下使用立即检索策略,即从数据库加载A对象时 会同时加载跟它关联的B,这样产生了不必要的对象集合查询,而且本来可以合并的sql要执行1+N次,因为一条select出所有的A ...
- php计算两个经纬度地点之间的距离(转)
php计算两个指定的经纬度地点之间的距离,这个在做计算给定某个地点的经纬度,计算其附近的商业区,以及给定地点与附近各商业区之间的距离的时候,还是用的到的.下面是具体的函数代码以及用法示例. 关于如何获 ...
- 安装WordPress
安装php yum install php-fpm yum install php systemctl start php-fpm 启动php nginx 配置
- Android_程序未处理异常的捕获与处理
1.简单介绍 对于程序抛出的未被捕获的异常,可能会导致程序异常退出,界面不友好且应记录关键错误信息上传至server. 这里主要使用UncaughtExceptionHandler 2.代码实现 pu ...
- 一致性哈希算法(c#版)
最近在研究"一致性HASH算法"(Consistent Hashing),用于解决memcached集群中当服务器出现增减变动时对散列值的影响.后来 在JAVAEYE上的一篇文章中 ...
- 修改登陆织梦后台的“DedeCMS 提示信息”
修改方法: 在dedecms程序的include目录中找到文件common.func.php并对其进行编辑,把其中的“DedeCMS 提示信息”修改为自己想要的内容提示: 在dedecms程序的默认管 ...
- 循序渐进学Python 1 安装与入门
1 安装 2 使用 2.1 运行程序 3 艺搜参考 by 2013年10月16日 安装 Windows安装版,源码,帮助文档: 使用 打开开始菜单中的Python GUI启动Python解释器: 启动 ...