确定字符串是否是另一个的排列
原题目链接
题目描述
实现一个算法来识别一个字符串 str2
是否是另一个字符串 str1
的排列。
排列的解释如下:如果将 str1
的字符拆分开,重新排列后再拼接起来,能够得到 str2
,那么就说字符串 str2
是字符串 str1
的排列。(不忽略大小写)
如果 str2
是 str1
的排列,则输出 YES
;如果不是,则输出 NO
。
输入描述
- 第一行输入字符串
str1
。 - 第二行输入字符串
str2
。 - 字符串长度均不超过 100。
输出描述
- 输出一行,如果
str2
是str1
的排列,输出YES
; - 如果
str2
不是str1
的排列,输出NO
。
输入输出样例
输入
acb
bac
输出
YES
c++代码
#include<bits/stdc++.h>
using namespace std;
int main() {
string str1, str2;
unordered_map<int, int> mp;
cin >> str1 >> str2;
for (char a : str1) mp[a]++;
for (char b : str2) {
if (mp.find(b) == mp.end() || mp[b] == 0) {
cout << "NO";
return 0;
}
mp[b]--;
}
cout << "YES";
return 0;
}//by wqs