Ancient Cipher

UVa1339


这道题注意并不是固定变换,所以只要判断字符个数是否一样。

#include <stdio.h>
#include <algorithm>
#include <string.h>
#define clr( a ) memset ( a, 0, sizeof ( a ) )
const int maxn = 105, N = 26;
int cnt1[N], cnt2[N];
char str[maxn], ch[maxn];
int main ( )
{
    int flag;
    //重排和映射并不是固定,是自己定的
    while ( ~ scanf ( "%s%s", str, ch ) )
    {
        flag = 1;
        clr ( cnt1 );
        clr ( cnt2 );
        for ( int i = 0; str[i]; i ++ )
            cnt1[ str[i]-'A' ] ++;
        for ( int i = 0; ch[i]; i ++ )
            cnt2[ ch[i]-'A' ] ++;
        std :: sort ( cnt1, cnt1+N );
        std :: sort ( cnt2, cnt2+N );
        //所以只需要判断每个字符出现的次数是否一样
        for ( int i = 0; i < N; i ++ )
            if ( cnt1[i] != cnt2[i] )
                flag = 0;
        printf ( flag ? "YES\n" : "NO\n" );
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值