Description
SDEX是SDEX公司推出的,按照单词的形状进行的编码。比如"can" 和"khawn", "con" 和"gone" 在SDEX编码后会被认为相同。 SDEX编码将一串字符转化为一串数字,一个数字代替一个字符。 1 代表B, F, P, or V 2 代表C, G, J, K, Q, S, X, or Z 3 代表D or T 4 代表L 5 代表M or N 6 代表R 字符 A, E, I, O, U, H, W, 和Y 在该编码中不代表任何数字,重复的代表数字相同的字符只用一个数字来表示。如果两个字符串的SDEX编码相同,就认为这两个字符串相同。
Input
Output
对于每一个输入值,输出对应的SDEX编码的结果,一个结果一行。
Sample Input
KHAWN
PFISTER
BOBBY
Sample Output
25
1236
11
KEY:先将编码转成数字,然后打印的时候注意,连续的编码不打印,就可以了;
Source: #include < iostream > using namespace std; void translate( char str[]) ... { int a[ 21 ]; int k = 0 ; int len = strlen(str); int i; for (i = 0 ;i < len;i ++ ) ... { while (str[i] == str[i + 1 ]) i ++ ; if (str[i] == ' B ' || str[i] == ' F ' || str[i] == ' P ' || str[i] == ' V ' ) a[ ++ k] = 1 ; else if (str[i] == ' C ' || str[i] == ' G ' || str[i] == ' J ' || str[i] == ' K ' || str[i] == ' Q ' || str[i] == ' S ' || str[i] == ' X ' || str[i] == ' Z ' ) a[ ++ k] = 2 ; else if (str[i] == ' D ' || str[i] == ' T ' ) a[ ++ k] = 3 ; else if (str[i] == ' L ' ) a[ ++ k] = 4 ; else if (str[i] == ' M ' || str[i] == ' N ' ) a[ ++ k] = 5 ; else if (str[i] == ' R ' ) a[ ++ k] = 6 ; else a[++ k] = 0 ; } for (i = 1 ;i <= k;i ++ ) ... { while (a[i] == a[i + 1 ]) i ++ ; if (a[i]) cout << a[i]; } cout<< endl; } int main() ... { // freopen("fjnu_1637.in","r",stdin); char str[ 25 ]; while (gets(str)) ... { translate(str); } return 0 ; }