POJ_1002_java
来源:互联网 发布:中国复杂网络大会 编辑:程序博客网 时间:2024/05/28 04:54
POJ_1002_java
算法描述略,针对某算法进行知识点复习。
算法出处:http://www.2cto.com/kf/201304/203331.html
java算法:
package test;import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.IOException; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import java.util.Set; import java.util.TreeMap; public class POJ_1002 {/*** 以下方法主要完成以下功能:* 如果是一个数字,则直接返回,如果只一个字符,则返回它对应的数字* @param c* @return*/ public static char getNum(char c) { //如果这个字符是一个数字,则直接返回 if (Character.isDigit(c)) { return c; } //如果这个字符是A或B或C,则返回2.以下规则类似 if (c == 'A' || c == 'B' || c == 'C') { return '2'; } if (c == 'D' || c == 'E' || c == 'F') { return '3'; } if (c == 'G' || c == 'H' || c == 'I') { return '4'; } if (c == 'J' || c == 'K' || c == 'L') { return '5'; } if (c == 'M' || c == 'N' || c == 'O') { return '6'; } if (c == 'P' || c == 'R' || c == 'S') { return '7'; } if (c == 'T' || c == 'U' || c == 'V') { return '8'; } if (c == 'W' || c == 'X' || c == 'Y') { return '9'; } return '#'; } public static void main(String[] args) throws IOException { //DataInputStream(InputStream in).使用指定的底层 InputStream 创建一个 DataInputStream。 DataInputStream scan = new DataInputStream(new BufferedInputStream(System.in)); //TreeMap() .使用键的自然顺序构造一个新的、空的树映射。 Map< String, Integer> tm = new TreeMap(); int n = Integer.parseInt(scan.readLine().trim()); for (int i = 0; i < n; i++){ //将输入号码中的"-"去掉 String s = scan.readLine().replace("-", ""); StringBuilder sb = new StringBuilder(); for (int k = 0; k < s.length(); k++) { //得到的c可能是数字、# char c = getNum(s.charAt(k)); //isDigit(char ch).确定指定字符是否为数字。 /** * if语句的主要逻辑是: * 如果c是数字,则将他加入到标准号码串中 */ if (Character.isDigit(c)) { sb.append(c); } } //将字符串转换成标准形式的号码 String result = sb.toString().substring(0, 3) + '-' + sb.toString().substring(3); //containsValue(Object value) . 如果此映射为指定值映射一个或多个键,则返回 true。 /** * if···else主要完成以下逻辑 * 1)判断TreeMap里面是否应含有这个号码,如果有,则将其对应的次数+1. * 2)如果没有,则将该号码的次数设置为1 */ if (tm.containsKey(result)) { //get(Object key) .返回指定键所映射的值 //,如果对于该键而言,此映射不包含任何映射关系,则返回 null。 int count = tm.get(result) + 1; tm.put(result, count); } else { //TreeMap中还没有该号码,将该号码的次数设置为1 tm.put(result, 1); } } //keySet().返回此映射包含的key的 Set 视图。 Set se = tm.keySet(); Iterator it = se.iterator(); boolean flag = false; while (it.hasNext()) { String s = it.next().toString(); int count = tm.get(s); /** * 以下if语句主要完成以下功能: * 如果出现次数大于1,则将号码及它的出现次数打印出来 */ if (count > 1) { flag = true; System.out.println(s + " " + count); } } //如果所有标准形式的号码都没有重复的 //则输出No duplicates. if (!flag) { System.out.println("No duplicates. "); } } }
@@知识点讲解:
(1)
Character 类用于对单个字符进行操作。Character 类在对象中包装一个基本类型 char 的值,
然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情况。为了解决这个问题,Java语言为内置数据类型char提供了包装类Character类。Character类提供了一系列方法来操纵字符。你可以使用Character的构造方法创建一个Character类对象,例:Characterch = newCharacter('a');
常用方法:isDigit--是否是一个数字字符;isLetter()--是否是一个字母;
(2) 此中用到了很多Map,Set,Iterator等知识,这些数据结构是很重要的一部分,特单独开博讲。
(3)等我把以上部分完全理解后,在回来对算法进行强力解析。
isLetter()
是否是一个字母
是否是一个字母
0 0
- POJ_1002_java
- Poj_1002_java解决
- HibernateUtil工具类的编写
- bzoj2333[SCOI2011]棘手的操作
- collection实现电子相册预览可以放到效果
- txt文件导入HBase
- caffe的python接口学习(5):生成deploy文件
- POJ_1002_java
- td-agent收集日志到mongobd
- 一个密码中包含数字,大写字母,小写字母,特殊符号@#$%^&*中的三种,长度在6-12 之间,并且不能出现连续相同的字符串;正确返回1,不正确返回0.
- linux命令
- GYM 100247 L. For the Honest Election(递归)
- shiro第四课
- 自旋锁,互斥锁,信号量
- Java8新特性第1章(Lambda表达式)
- spark sql demo