实现一个算法来识别一个字符串str2是另一个字符串str1的排列。排列的解释如下:如果将str1的字符拆分开,重新排列后再拼接起来,能够得到str2,那么就说字符串str2是字符串str1的排列。(不忽略大小写)如果str2字符串是str1字符串的排列,则输出 YES;如果str2字符串不是str1字符串的排列,则输出NO。
cpp
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100
void judge_str(char *str1, char *str2)
{
int str1_len = strlen(str1);
int str2_len = strlen(str2);
// 将str1进行排序
for (int i = 0; i < str1_len; i++)
{
for (int j = 0; j < str1_len - 1 - i; j++)
{
if (str1[j] > str1[j + 1])
{
int temp = str1[j];
str1[j] = str1[j + 1];
str1[j + 1] = temp;
}
}
}
// 将str2进行排序
for (int i = 0; i < str2_len; i++)
{
for (int j = 0; j < str2_len - 1 - i; j++)
{
if (str2[j] > str2[j + 1])
{
int temp = str2[j];
str2[j] = str2[j + 1];
str2[j + 1] = temp;
}
}
}
// 将str1和str2进行比较
if (strcmp(str1, str2) == 0)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
int main()
{
char str1[MAX_SIZE] = {0};
char str2[MAX_SIZE] = {0};
scanf("%s", str1);
scanf("%s", str2);
judge_str(str1, str2);
return 0;
}