黑客小马哥-做题

原题

小码哥是一名黑客,他最近刚彩票中奖,由于还没兑换,小码哥十分担心彩票被盗(小码哥过分谨慎了),他想为自己的保险箱设新的密码,顺便他想让你测试编码。
现有两种编码方式:

  1. 对于已知字符串中的某种字符,全部变成另一种字符。如里面出现的A全部换成B;
  2. 对于当前字符串,打乱字符顺序。

先给你一个加密后的字符串和加密前的字符串,判断加密前的字符串是否能得到加密后的字符串。字符串中字符均为大写字母。

格式

输入格式:

第一行加密后的字符串;
第二行加密前的字符串;
有多组数据输入。

输出格式:

输出“YES”或“No”。

样例

输入:

JWPUDJSTVP
VICTORIOUS
MAMA
ROME
HAHA
HEHE
AAA
AAA
NEERCISTHEBEST
SECRETMESSAGES

输出:

YES
NO
YES
YES
NO

备注

所有字符串长度不超过100。

代码

/**
    输入格式:
            第一行加密后的字符串;
            第二行加密前的字符串;
            有多组数据输入。
    输出格式:输出YES或NO。
    样例1   输入:JWPUDJSTVP
                VICTORIOUS
                MAMA
                ROME
                HAHA
                HEHE
                AAA
                AAA
                NEERCISTHEBEST
                SECRETMESSAGES
            输出:YES
                 NO
                 YES
                 YES
                 NO
    备注
        所有字符串长度不超过100。
*/
#include <bits/stdc++.h>
using namespace std;
const int LL = 26;
//int cont1[LL], cont2[LL];           这个不能放在全局变量啊!每次都要调用函数,所以不能放在全局变量上
bool judge(string str1, string str2)
{
    if (str1.size() != str2.size())
    {
        return false;
    }
    int cont1[LL]={0}, cont2[LL]{0};
    for (int i = 0; i < str1.length(); i++)
    {
        cont1[str1[i] - 'A']++;
        cont2[str2[i] - 'A']++;
    }

    sort(cont1, cont1 + LL);
    sort(cont2, cont2 + LL);

    for (int i = 0; i < LL; i++)
    {
        if (cont1[i]!= cont2[i])
           return false;
    }
    return true;

}


int main()
{
    string str1, str2;
    while (cin >> str1 >> str2)
    {
        if (judge(str1, str2))
        {
            cout << "YES"<<endl;
        }
        else cout << "NO"<<endl;
    }
    return 0;
}

反思

  刚开始的时候把cont1和cont2都写到全局中去了,然而每次调用函数都要用到这两个计数器,自然要放在函数体中定义!下次注意。 

  
 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值