poj 2608 Soundex

#include <stdio.h>
char ch[20];
	
int Find(int i)
{
	while(1)
	{
	  if (ch[i]==ch[i+1]) i++;
	  else if(ch[i]!=ch[i+1]) return i;
	}
}
int main(int argc, char *argv[])
{
	int i;

	while(scanf("%s",ch)!=EOF)
	{
		for (i=0;ch[i];i++)
		{
			switch(ch[i])
			{
				case'B':
				case'F':
				case'P':
				case'V':ch[i]='1';break;
				case'C':
				case'G':
				case'J':
				case'K':
				case'Q':
				case'S':
				case'X':
				case'Z':ch[i]='2';break;
				case'D':
				case'T':ch[i]='3';break;
				case'L':ch[i]='4';break;
				case'M':
				case'N':ch[i]='5';break;
				case'R':ch[i]='6';
			}
		}
			for(i=0;ch[i];i++)
			{
				i=Find(i);
				if(ch[i]>='1' && ch[i]<='6') printf("%c",ch[i]);
			}
		printf("\n");
	}
	return 0;
}


 题意:

1 represents B, F, P, or V
2 represents C, G, J, K, Q, S, X, or Z
3 represents D or T
4 represents L
5 represents M or N
6 represents R

Sample Input

KHAWN
PFISTER
BOBBY

Sample Output

25
1236
11

邻接的两个代表的数字一样的话就输出一个

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值