1932: 语音识别

内存限制:64 MB 时间限制:1 S 标准输入输出
题目类型:传统 评测方式:文本比较 上传者:
提交:61 通过:28

题目描述

       如果使用姓氏在数据库中查找一个人的名字, 仅当你准确知道名字是如何拼写的时候才会成功. 不过, 假设你正在运行一个航班预订系统, 并且需要在不知道精确的拼写时查找名字. 你将需要一种方法, 基于名字的发言对他们进行编码. 然后, 查找将输出具有类似读音的名字的表项. 例如, 你将希望相同的查找可以发现DicksonDixon.

       Soundex算法就是这样一个根据发音来编码姓名的算法. 它使得读音相似的名字具有相同的编码. 该系统被广泛使用. 它基于语言学家和速记员所熟悉的一个概念: 可以只基于辅音字母来区分英文单词和名字. 例如, 注意当只有辅音字母表示这个句子的最后几个单词(the last few words of this sentence when represented by consonants alone) : th lst fw wrds f ths sntnc whn rprsntd b cnsnnts alne. 其含义很清晰, 即使拼写看上去有点奇怪.

       Soundex读取一个名字(只包含大小写字母), 先把所有字母转化成大写的, 保留第一个字母, 从第二个输入的字母开始, 对于每个字母赋予7个值之一, 其中A, E, I, O, U, H, W, Y对应0; B, F, P, V对应1, C, G, J, K, Q, S, X, Z对应2, D, T对应3; L对应4; M, N对应5; R对应6; 在赋予所有字母各自的数字之后, 将先删除0, 再把连续重复出现的相同数字减少到一位(实际上会删除成对出现的辅音字母以及重复出现的相同辅音字母组). 代码中使用了前三个余下的数字. 如果剩下的数字少于三个, 将用0填充代码. Soundex代码包含要编码的单词或名字的首字母, 其后接着三位数字的代码. 这样Lincoln转换为L524.

       当我们使用Soundex, 名字DicksonDixon具有相同的代码: D250. Smith, Smyth, Smythe也将分享共同的Soundex代码. Soundex方法可以有效地用于从数据库中检索名字.

       现给出若干个名字, 请分别输出他们的Soundex代码.

输入格式

输入文件包含多个测试数据, 每个测试数据占一行, 为一个长度不超过20的英文字母字符串. 输入到文件尾结束.

输出格式

对于输入的每个数据,输出相应的结果。

 

输入样例 复制

Dickson
Dixon
dixon
Smith
Smyth
Smythe

输出样例 复制

D250
D250
D250
S530
S530
S530