Ancient Cipher

本文分享了一道名为AncientCipher的编程题解题过程,通过计算并比较两个字符串中字符出现频率的方法来判断两串字符是否匹配。采用C++实现,主要步骤包括:初始化计数数组、遍历字符串计算字符频率、排序并比较计数数组。

Ancient Cipher

think:
我记得心理老师曾经说过,人在高兴的时候,应该多做一些平时想做却没有做的事情,不然,就是浪费了这样的好心情。
所以啊,我就把将近两个月前的没有AC的题目拿出来了,也是该晾一晾了……

回归这道题目,这是一个类似于映射的问题,两个字符串,计算每个字符出现的个数,然后排序,比较。

题目比较难理解,但是代码很容易实现。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
char s1[121], s2[121];
int a[200], b[200];
int main()
{
    while(~scanf("%s%s", s1, s2))
    {
        memset(a, 0, sizeof(a));
        memset(b, 0, sizeof(b));
       int len1 = strlen(s1);
       for(int i=0;i<len1;i++)
       {
         a[s1[i]]++;
         b[s2[i]]++;
       }
       sort(a, a+200);
       sort(b, b+200);
       int f = 0;
       for(int i=0;i<200;i++)
       {
          if(a[i]!=b[i])
          {
            f = 1;
            break;
          }
       }
       if(f)
       cout<<"NO"<<endl;
       else
       cout<<"YES"<<endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值