写出一个函数 anagram(s, t) 判断两个字符串是否可以通过改变字母的顺序变成一样的字符串。
您在真实的面试中是否遇到过这个题?
Yes
说明
What is Anagram?
- Two strings are anagram if they can be the same after change the order of characters.
样例
给出 s = "abcd",t="dcab",返回 true.
给出 s = "ab", t = "ab", 返回 true.
给出 s = "ab", t = "ac", 返回 false.
class Solution {
public:
/**
* @param s: The first string
* @param b: The second string
* @return true or false
*/
bool anagram(string s, string t) {
// write your code here
multiset<char> mset;
for(int i=0;i<s.length();i++){
mset.insert(s[i]);
};
for(int i=0;i<t.length();i++){
auto pos=mset.find(t[i]); //find 如果查找到的话,返回迭代器,如果查找不到,返回指向end 的迭代器
if(pos==mset.end()){
//没有找到
return false;
}
else{
mset.erase(pos);//
//mset.erase( cval ); // 不能这样清除一个元素,因为它会清除掉所有的元素
}
}
return true;
}
};