生活随笔
收集整理的這篇文章主要介紹了
Soundex编码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
Soundex編碼是將基于它們的拼寫聽起來相同的單詞歸類在一起。例如,“can”和“khawn”,“con”和“gone”在Soundex編碼下是等價的。
Soundex編碼涉及將每個單詞轉換成一連串的數字,其中每一個數字代表一個字母:
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
.
.
.
.
.
.
分析
一道水題
注意:
字母A、E、I、O、U、H、W和Y在Soundex編碼中不被表示,并且如果存在連續的字母,這些字母是用相同的數字表示的,那么這些字母就僅用一個數字來表示
.
.
.
.
.
程序:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
string s;
int work(int w)
{char x=s[w];int ans=0,ans1=0;if (x=='B'||x=='F'||x=='P'||x=='V') ans=1; elseif (x=='C'||x=='G'||x=='J'||x=='K'||x=='Q'||x=='S'||x=='X'||x=='Z') ans=2; elseif (x=='D'||x=='T') ans=3; elseif (x=='L') ans=4; elseif (x=='M'||x=='N') ans=5; elseif (x=='R') ans=6;if (w==0) return ans;x=s[w-1];if (x=='B'||x=='F'||x=='P'||x=='V') ans1=1; elseif (x=='C'||x=='G'||x=='J'||x=='K'||x=='Q'||x=='S'||x=='X'||x=='Z') ans1=2; elseif (x=='D'||x=='T') ans1=3; elseif (x=='L') ans1=4; elseif (x=='M'||x=='N') ans1=5; elseif (x=='R') ans1=6;if (ans==ans1) return 0; else return ans;
}int main()
{while (cin>>s){string zfc="";int u=work(0);if (u!=0) zfc=zfc+((char)(u+'0'));int i=1,l=s.length() -1;while (i<=l){u=work(i);if (u!=0) zfc=zfc+((char)(u+'0'));i++;}cout<<zfc<<endl;}return 0;
}
轉載于:https://www.cnblogs.com/YYC-0304/p/10292826.html
總結
以上是生活随笔為你收集整理的Soundex编码的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。