串s1中的字母女人能够与串s2中的字母映射,那么两字母出现次数必然相等。
所以两串想要一一映射,要看字符出现的数量。
#include<iostream>
#include<string>
#include<string.h>//memset的头文件
#include<algorithm>//sort的头文件
#include<cstdio>//输入输出重定向的头文件
using namespace std;
int main()
{
string s[2];
int box[2][30],k;
//freopen("input.txt","r",stdin); 输入重定向 cin>>a 相当于从文件流入到啊 可以用这个更方便的测试数据
while(cin>>s[0]>>s[1])
{
for(int k=0;k<2;k++)
{
memset(box[k],0,sizeof(box[k]));
int L=s[k].length(),row=0;
for(int i=0;i<L;i++)
{
int sum=0;
if(s[k][i]==0)continue;
char c=s[k][i];
for(int j=i;j<L;j++)
{
if(s[k][j]==c)
{
s[k][j]=0;
sum++;
}
}
box[k][row++]=sum;
}
sort(&box[k][0],&box[k][0]+26);
}
for(int i=0;i<26;i++)
{
if(box[1][i]!=box[0][i])
{
cout<<"NO\n";
goto fina;
}
}
cout<<"YES\n";
fina:;
}
return 0;
}
#include<string>
#include<string.h>//memset的头文件
#include<algorithm>//sort的头文件
#include<cstdio>//输入输出重定向的头文件
using namespace std;
int main()
{
string s[2];
int box[2][30],k;
//freopen("input.txt","r",stdin); 输入重定向 cin>>a 相当于从文件流入到啊 可以用这个更方便的测试数据
while(cin>>s[0]>>s[1])
{
for(int k=0;k<2;k++)
{
memset(box[k],0,sizeof(box[k]));
int L=s[k].length(),row=0;
for(int i=0;i<L;i++)
{
int sum=0;
if(s[k][i]==0)continue;
char c=s[k][i];
for(int j=i;j<L;j++)
{
if(s[k][j]==c)
{
s[k][j]=0;
sum++;
}
}
box[k][row++]=sum;
}
sort(&box[k][0],&box[k][0]+26);
}
for(int i=0;i<26;i++)
{
if(box[1][i]!=box[0][i])
{
cout<<"NO\n";
goto fina;
}
}
cout<<"YES\n";
fina:;
}
return 0;
}