题目描述
如果两个单词的组成字母完全相同,只是字母的排列顺序不一样,则它们就是变位词,两个单词相同也被认为是变位词。如tea 与eat , nic 与cin, ddc与dcd, abc与abc 等。你的任务就是判断它们是否是变位词。
输入
第一行一个N,表示下面有N行测试数据。每行测试数据包括两个单词,如tea eat ,它们之间用空格割开
输出
对于每个测试数据,如果它们是变位词,输出Yes,否则输出No.
样例输入
3 tea eat ddc cdd dee dde
样例输出
Yes
Yes
No
代码:
#include<iostream>
using namespace std;
void print()
{
int k = 0; //a,b中相同的个数
string a, b;
cin >> a >> b;
if (a.length() != b.length()) //a与b不等长,显然NO
{
cout << "No" << endl;
return ;
}
for (int i = 0; i < a.length(); i++)
{
for (int j = i; j < a.length(); j++)
{
if (a[i] == b[j]) //找到a,b中有相同时
{
swap(b[i], b[j]); //将b中元素交换到与a对应相同的位置
k++; //k++
break;
}
}
}
if (k == a.length()) //判断相同个数是否等于字符串长度
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
return;
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
print();
}
return 0;
}