题目摘自http://blog.csdn.net/dongyi91/article/details/38639915 写了2个小时,水平太菜了

入法的编码原理为:根据已有编码表,当输入拼音和数字后输出对应的字符。例如:

有如下编码:喜_xi      洗_xi    系_xi     无_wu    五_wu(字符和拼音之间用下划线隔开),那么当输入xi2时,结果为拼音位xi的第二个字符,即“洗”。

输入:Code

喜_xi

洗_xi

系_xi

无_wu

五_wu

Search

xi2

End

输出:洗

注意:当在编码表中查询不到时,结果为“Error”;当输入的拼音没有数字,即"xi"时,输出结果为:拼音为xi的前若干个字符,但是最多输出5个,即输出:喜;洗;系。

考察点:字符串的分割、字符串转化为整型、multimap的使用(key为拼音,value为对应字符)。

  1.  
  2. package 华为机试;
  3.  
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.Iterator;
  7. import java.util.Scanner;
  8.  
  9. public class Main4 {
  10.  
  11. public static void main(String[] args) {
  12. // TODO Auto-generated method stub
  13. Scanner scn=new Scanner(System.in);
  14. //读取code
  15. HashMap<String,ArrayList<String>> hash=new HashMap<String,ArrayList<String>>();
  16. String cur=scn.next();
  17. while(!cur.equals("Search"))
  18. {
  19.  
  20. String s[]=cur.split("_");
  21. // System.out.println(s[0]+"--"+s[1]);
  22. if(hash.get(s[1])==null)
  23. {
  24. ArrayList arry=new ArrayList<String>();
  25. arry.add(s[0]);
  26. hash.put(s[1],arry);
  27.  
  28. }
  29. else
  30. {
  31. hash.get(s[1]).add(s[0]);
  32.  
  33. }
  34.  
  35. cur=scn.next();
  36. }
  37. //输出hash值
  38. /* Iterator<String> iter=hash.keySet().iterator();
  39. while(iter.hasNext())
  40. {
  41. System.out.println(iter.next());
  42. }
  43. */
  44. cur=scn.next();
  45. while(!cur.equals("End"))
  46. {
  47.  
  48. char last=cur.charAt(cur.length()-1);
  49. System.out.println("cur"+ last);
  50. //分离出数字
  51.  
  52. if(last>='0'&&last<='9') //最后一位是是否有数字
  53. {
  54. int i;
  55. for( i=0;i<cur.length();i++)
  56. {
  57. char c=cur.charAt(i);
  58. if(c>'0'&&c<='9') break;
  59.  
  60. }
  61. String key=cur.substring(0,i);
  62. int pos=Integer.valueOf(cur.substring(i));
  63.  
  64. if(hash.get(key)==null) System.out.println("Error");
  65. else
  66. {
  67.  
  68. System.out.println(hash.get(key).get(pos));
  69. }
  70.  
  71. }
  72. else //不是数字直接输出前5个,如果有的话
  73. {
  74. int count=0;
  75. for(String s:hash.get(cur))
  76. {
  77. System.out.println(s);
  78. count++;
  79. if(count==5) break;
  80. }
  81.  
  82. }
  83. cur=scn.next();
  84.  
  85. }
  86.  
  87. }
  88.  
  89. }

  

华为2015 简单 字典输入法 java的更多相关文章

  1. 2015第22周六Java反射、泛型、容器简介

    Java的反射非常强大,传递class, 可以动态的生成该类.取得这个类的所有信息,包括里面的属性.方法以及构造函数等,甚至可以取得其父类或父接口里面的内容. obj.getClass().getDe ...

  2. 算法笔记_071:SPFA算法简单介绍(Java)

    目录 1 问题描述 2 解决方案 2.1 具体编码   1 问题描述 何为spfa(Shortest Path Faster Algorithm)算法? spfa算法功能:给定一个加权连通图,选取一个 ...

  3. PAT(B) 1089 狼人杀-简单版(Java)逻辑推理

    题目链接:1089 狼人杀-简单版 (20 point(s)) 题目描述 以下文字摘自<灵机一动·好玩的数学>:"狼人杀"游戏分为狼人.好人两大阵营.在一局" ...

  4. 2015.11.27初识java一集简单的java小程序

    JAVA配置环境变量方法: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME变量值:D:\Java\jdk1.7.0_ ...

  5. 隐马尔科夫模型python实现简单拼音输入法

    在网上看到一篇关于隐马尔科夫模型的介绍,觉得简直不能再神奇,又在网上找到大神的一篇关于如何用隐马尔可夫模型实现中文拼音输入的博客,无奈大神没给可以运行的代码,只能纯手动网上找到了结巴分词的词库,根据此 ...

  6. 小学生四则运算出题程序 无操作界面java版 简单的运用java中一些基本操作

    这是本学期java课中实验大纲里的第一个实验,这里简单做了一个无用户界面版本. import java.util.Random; import java.util.Scanner; public cl ...

  7. 华为S9306简单实用配置合集

    华为QuidWay交换机配置命令手册: .开始 建立本地配置环境,将主机的串口通过配置电缆与以太网交换机的Console口连接. 在主机上运行终端仿真程序(如Windows的超级终端等),设置终端通信 ...

  8. WebService 超简单入门教程(Java)

    写在前面的话: 当两个人碰面后,产生了好感,如果需要得到双方的信息,那么双方的交流是必不可少的!应用程序也如此, 各个应用程序之间的交流就需要WebService来作为相互交流的桥梁! 项目目的: 程 ...

  9. 华为 2015 机试 输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin。

    package 华为机试; //C++ 输入:由数字和字母组成的字符串,例如:333aaabb55ppin //输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的 ...

随机推荐

  1. Jquery animate的使用方法

    js: $('#colspan').click(function () { if ($('#colspan').hasClass('glyphicon-chevron-up')) { $('#cols ...

  2. poj 3373 Changing Digits (DFS + 记忆化剪枝+鸽巢原理思想)

    http://poj.org/problem?id=3373 Changing Digits Time Limit: 3000MS   Memory Limit: 65536K Total Submi ...

  3. 使用PyInstaller打包Python程序

    本文转载自: http://www.pycoding.com/2015/04/23/pyinstaller.html

  4. MongoDB索引介绍

    MongoDB中的索引其实类似于关系型数据库,都是为了提高查询和排序的效率的,并且实现原理也基本一致.由于集合中的键(字段)可以是普通数据类型,也可以是子文档.MongoDB可以在各种类型的键上创建索 ...

  5. javascript移动设备触屏事件

    ontouchstartontouchmoveontouchendontouchcancel 目前移动端浏览器均支持这4个触摸事件: /** * onTouchEvent */ var div = d ...

  6. vs2015 好用插件

    备用一下,方便自己查阅 Viasfora 高亮,让自己看代码舒服 ClaudiaIDE 更换编辑器背景 Markdown Mode 编辑Markdown Glyphfriend 图像文字支持 Web ...

  7. 如何确定照片是否被PS过

    除了用软件,还可以先右键属性----解除锁定----重新打开属性看详细信息.

  8. HDU 2045 不容易系列之(3)—— LELE的RPG难题(递推)

    点我看题目 题意 : 中文题不解释. 思路  :先算了第3个第4个,算的时候发现只要在已经枚举出来的前边的状态中往后添加字母就行了,如果两个的都已经表示出来了,那第三个就可以在每个第二个后边加一个,在 ...

  9. ListView 长按拖动会变黑的解决方案

    在ListView的xml文件中添加这个属性: android:cacheColorHint="#00000000"

  10. Error -27791: Server xx has shut down the connection prematurely

    最近在进行一次性能测试中遇到一个问题,并发较大的时候会出现LR出现Error -27791: Server xx has shut down the connection prematurely的ER ...