您当前的位置: 首页 > 

minato_yukina

暂无认证

  • 2浏览

    0关注

    138博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

紫书例题4-1 古老密码

minato_yukina 发布时间:2020-11-23 10:39:52 ,浏览量:2

题意 给你一个字符串,然后这个字符串可以重排,一一映射(一个字母可以随便换),比如A映射到Z,B映射到A...

然后再给一个答案字符串,问这个答案字符串能不能由上面的字符串重排映射得到.

思路:

因为可以重排,这提示我们字母的顺序其实根本没有关系.

只需要统计两个字符串中各自字母出现的顺序,然后sort两个计数数组,如果他们的值都一一相等,则说明能通过重排变换得到.

为什么会这样呢.. 

举个例子 原串     BBBXXX

               答案串  VVVAAA  答案是yes 因为你可以把B都映射到V或者A,X同样也是,所以我们不关心他们的字母是多少,只需要知道他们各自的出现次数

代码:

#include
#include
#include
using namespace std;
bool cmp(int a,int b){
	return a>b;
}
int main(){ char s1[1145],s2[1145];int cnt1[30],cnt2[30],i,j,k;
while(scanf("%s %s",s1,s2)!=EOF){ 
	{
		memset(cnt1,0,sizeof(cnt1));memset(cnt2,0,sizeof(cnt2));
	} 
int len=strlen(s1);
for(i=0;i            
关注
打赏
1663570241
查看更多评论
0.1594s