题意有点不好读,第一种是凯撒密码,第二种是改变字符的序列,这2种方式同时使用,判断str1能否转换为str2,看起来好像感觉很难的样子,其实很简单,我也不好说,直接看代码吧。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(void)
{
int num1[26],num2[26];
char str[101];
scanf("%s",str);
int len = strlen(str);
memset(num1,0,sizeof(num1));
memset(num2,0,sizeof(num2));
for(int i=0;i<len;++i)
{
num1[str[i]-'A']++;
}
scanf("%s",str);
len = strlen(str);
for(int i=0;i<len;++i)
{
num2[str[i]-'A']++;
}
bool flag = false;
sort(num1,num1+26);
sort(num2,num2+26);
for(int i=0;i<26&&!flag;++i)
{
if(num1[i]!=num2[i])
{
flag = true;
}
}
if(flag)
{
cout<<"NO"<<endl;
}
else
cout<<"YES"<<endl;
return 0;
}
本文介绍了一种简单的算法,用于判断通过凯撒密码和字符序列变换后的一个字符串(str1)是否能变为另一个字符串(str2)。该算法通过对两个字符串的字符频率进行排序比较来实现。
1889

被折叠的 条评论
为什么被折叠?



