写出一个函数 anagram(s, t)
判断两个字符串是否可以通过改变字母的顺序变成一样的字符串。
您在真实的面试中是否遇到过这个题?
样例
给出 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 //Lintcode--002;
//此题目应该与Lintcode--001属于同类型题目,核心思路一致,只是最后两个字符串做的比较不一样;
//这个题目甚至更简单一些,但是细节上需要注意ASCII码表,一些常见字符对应的十进制值,这有利于以后使用;
//解析可参考Lintcode--001; //边界条件,长度如果不相等,直接pass;
if(s.size()!=t.size()){
return false;
}
//主要任务应该是比较两个字符串,各个字母出现的次数是否相同;
//创建数组,用来统计各种字符出现的次数; else {
int letters1[];
memset(letters1,,sizeof(letters1));
for(int i=;i<s.size();i++){
letters1[s[i]-' ']++;
}
int letters2[];
memset(letters2,,sizeof(letters2));
for(int j=;j<t.size();j++){
letters2[t[j]-' ']++;
}
for (int k=;k<;){
if (letters1[k]==letters2[k]){
k=k+;
}
else
{
return false;
}
}
return true;
}
}
};
附:ASCII码表