10月24日 Soundex编码

本文深入探讨了Soundex编码算法,一种用于将发音相似的单词进行归类的编码方法。文章详细介绍了Soundex编码的规则,包括如何将特定字母转换为数字以及如何处理重复的数字。通过一个具体的代码示例,读者可以了解如何实现这一算法。

题目

   

题目描述
Soundex编码是将基于它们的拼写听起来相同的单词归类在一起。例如,“can”和“khawn”,“con”和“gone”在Soundex编码下是等价的。
Soundex编码涉及将每个单词转换成一连串的数字,其中每一个数字代表一个字母:
  1. 1表示B、F、P或V
    2表示C、G、J、K、Q、S、X或Z
    3表示D或T
    4表示L
    5表示M或N
    6表示R
字母A、E、I、O、U、H、W和Y在Soundex编码中不被表示,并且如果存在连续的字母,这些字母是用相同的数字表示的,那么这些字母就仅用一个数字来表示。具有相同Soundex编码的单词被认为是相等的。
 
输入
输入的每一行给出一个单词,全大写,少于20个字母长
输出
对每行输入,输出一行,给出Soundex编码。
输入样例复制
KHAWN
PFISTER
BOBBY
输出样例复制
25
1236
11
说明

分析

    水

代码

 1 #include<iostream>
 2 using namespace std;
 3 int a[26]={0,1,2,3,0,1,2,0,0,2,2,4,5,5,0,1,2,6,2,3,0,1,0,2,0,2};
 4 int main ()
 5 {
 6      string h; 
 7      string s;
 8      while (cin>>s)
 9      {
10          h="";
11          for (int i=0;i<s.size();i++)
12          {
13              if (a[s[i]-'A']!=0)
14               h+=(a[s[i]-'A']+48);
15              while (a[s[i]-'A']==a[s[i+1]-'A'])
16                i++;
17          }
18         cout<<h<<endl;
19      }
20 }

 

转载于:https://www.cnblogs.com/zjzjzj/p/9860957.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值