输入法智能联想 Java_华为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> hash=new HashMap>();

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();

arry.add(s[0]);

hash.put(s[1],arry);

}

else

{

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

}

cur=scn.next();

}

//输出hash值

/* Iterator 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

{

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();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值