Lintcode--002(两个字符串是变位词)
写出一个函数 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[128]; memset(letters1,0,sizeof(letters1)); for(int i=0;i<s.size();i++){ letters1[s[i]-' ']++; } int letters2[128]; memset(letters2,0,sizeof(letters2)); for(int j=0;j<t.size();j++){ letters2[t[j]-' ']++; } for (int k=0;k<128;){ if (letters1[k]==letters2[k]){ k=k+1; } else { return false; } } return true; } } };
附:ASCII码表