日期:2014-05-20  浏览次数:20678 次

求段代码或思路。
选择一组等长度的英文单词,例如,一组4个字母的单词
work   back   come   deal   desk   book   java   tool   face
一组5个字母的单词
watch   match   noise   risky   stock
试定一个一个字符串数组,数组中每个元素存储一个英文单词,元素的个数根据选择的英文单词而定。在按照电话机表盘定一数字与字母的对应关系,例如   2对应   a或b或c,数字5对应j,k,l。编制一个程序,要求将用户输入的数字串转换成为对应的字符串(注意一个数字串对应多个字母串),将这些字符串与数组中的存储的英文单词进行逐个比较,如果某一个字符串与单词匹配成功,则在屏幕上输出数字串以及对应的单词,如果没有匹配成功,则输入“没有匹配的单词”。

------解决方案--------------------
如果你是一边输入一边匹配,就象google自动完成那种效果,就可以不用按字母个数来分开单词,
假如你最开始输入2,就可以排除非abc开头的单词,第二个输入数字5,再在剩余的单词里面排除第二个字母非jkl的单词.同理继续...
------解决方案--------------------
这好像是 ACM 中的一道题。
------解决方案--------------------
我觉得用hash来检测碰撞会好一点
------解决方案--------------------
找本数据结构的书来看一下吧

我的思路是这样的:
先对字符串数组hash化,填入hash表里面
(字符串的hash化,比如work为(23*27+15*27^2+18*27^3+11*27^4)%表容量,类推)

之后再输入单词,直接hash化后在hash表里找就行了

据书上说字典也可以这样做