华为2015 简单 字典输入法 java

题目摘自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为对应字符)。


package 华为机试;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;

public class Main4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scn=new Scanner(System.in);
		//读取code
		HashMap<String,ArrayList<String>> hash=new HashMap<String,ArrayList<String>>();
		    String cur=scn.next();
	         while(!cur.equals("Search"))
	         {

	        	 String s[]=cur.split("_");
	        	// System.out.println(s[0]+"--"+s[1]);
	     	 if(hash.get(s[1])==null)
	        	{
	        		  ArrayList arry=new ArrayList<String>();
	        		  arry.add(s[0]);
	        		  hash.put(s[1],arry);

	            }
	        	 else
	        	 {
	        		 hash.get(s[1]).add(s[0]);

	        	 }

	        	 cur=scn.next();
	         }
	         //输出hash值
	    /*     Iterator<String> iter=hash.keySet().iterator();
	         while(iter.hasNext())
	         {
	        	 System.out.println(iter.next());
	         }
	         */
	         cur=scn.next();
	         while(!cur.equals("End"))
	         {

	        	char last=cur.charAt(cur.length()-1);
	        	System.out.println("cur"+ last);
	        	//分离出数字

	        	if(last>=‘0‘&&last<=‘9‘) //最后一位是是否有数字
	        	{
	        		int i;
        			for( i=0;i<cur.length();i++)
        			{
        				char c=cur.charAt(i);
        				if(c>‘0‘&&c<=‘9‘) break;

        			}
        			String key=cur.substring(0,i);
        			int pos=Integer.valueOf(cur.substring(i));

	        		if(hash.get(key)==null) System.out.println("Error");
	        		else
	        		{

	        			System.out.println(hash.get(key).get(pos));
	        		}

	        	}
	        	else  //不是数字直接输出前5个,如果有的话
	        	{
	        		int count=0;
	        		for(String s:hash.get(cur))
	        		{
	        			System.out.println(s);
	        			count++;
	        			if(count==5) break;
	        		}

	        	}
	        	cur=scn.next();

	         }

	}

}

  

时间: 2024-08-05 15:37:38

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

HDU 1247 简单字典树

Hat’s Words Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7359    Accepted Submission(s): 2661 Problem Description A hat’s word is a word in the dictionary that is the concatenation of exactly

mybatis简单sql使用java注解而不是xml配置

一直没有系统的接触mybatis,这就导致对其构建模式并没有清晰的认知,所以项目中所有的查询语句都使用在xml中配置,无论是简单sql,还是复杂sql,无一例外的没有使用java注解,这一点,现在看来,真是后悔莫及!那么请你牢记这点原则吧:mybatis简单sql使用java注解而不是xml配置! 再次使用mybatis,觉得有必要重新认识一下它.这就好比,在你上班的路上,如果偶尔抬抬头扫一扫你的周围,也许就会瞥见不一样的风景──非常有气质的美女映入眼帘,你不得不聚精会神的把眼光的焦点全部集中于

[LeetCode 85] Maximal Rectangle (华为2015机试)

题目链接:maximal-rectangle import java.util.Arrays; /** * Given a 2D binary matrix filled with 0's and 1's, * find the largest rectangle containing all ones and return its area. * */ public class MaximalRectangle { // 65 / 65 test cases passed. // Status

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

Java的反射非常强大,传递class, 可以动态的生成该类.取得这个类的所有信息,包括里面的属性.方法以及构造函数等,甚至可以取得其父类或父接口里面的内容. obj.getClass().getDeclaredMethods();//取得obj类中自己定义的方法, 包括私有的方法. obj.getClass().getMethods();//取得obj类中自己定义的方法及继承过来的方法, 但私有方法得不到. 同样, 对field也是一样,obj.getClass().getDeclaredFi

大话设计模式_简单工厂模式(Java代码)

简单的描述:一个父类.多个子类,实例化那个子类由一个单独的工厂类来进行 图片摘自大话设计模式: 运算类: 1 package com.longsheng.simpleFactory; 2 3 public class Calculate { 4 5 private double firstNum; 6 private double secondNum; 7 8 public double getFirstNum() { 9 return firstNum; 10 } 11 12 public v

冒泡排序与简单选择排序——Java实现

1.冒泡排序 1)原理说明:重复遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. 2)代码实现: package com.test.sort; public class BubbleSort { public static void sort(int[] data) { for (int i = 0; i < data.length; i++) { for (int j = data.length

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

目录 1 问题描述 2 解决方案 2.1 具体编码   1 问题描述 何为spfa(Shortest Path Faster Algorithm)算法? spfa算法功能:给定一个加权连通图,选取一个顶点,称为起点,求取起点到其它所有顶点之间的最短距离,其显著特点是可以求含负权图的单源最短路径,且效率较高.(PS:引用自百度百科:spfa是求单源最短路径的一种算法,它还有一个重要的功能是判负环(在差分约束系统中会得以体现),在Bellman-ford算法的基础上加上一个队列优化,减少了冗余的松弛

ScribeJava 3.1.0 发布,简单的 OAuth Java 库

ScribeJava 3.1.0 发布,ScribeJava 是一个简单的 Java 实现的 OAuth/OAuth2 库. 该版本主要改进内容包括: 1. 修复了 OdnoklassnikiServiceImpl 签名,使用词典顺序对参数进行排序后哈希,QKXue.NET找到一个详细的说明 http://new.apiok.ru/dev/methods/ 2. 增加支持使用外部创建的 http 客户端 3. ScribeJava 编译兼容 jdk7 4. 增加 travis CI (check

2015年33期Java/Spring/Struts2/web/基础/就业班视频

一.基础班课程(掌握Java核心课程) 日期        星期        课程(空内容表示放假)        上课老师2014/12/8        星期一        [开学典礼].Java开发前奏        钟太潋2014/12/9        星期二        Java语言基础        钟太潋2014/12/10        星期三                2014/12/11        星期四        Java语言基础        钟太潋2