题目链接:http://www.lintcode.com/zh-cn/problem/two-strings-are-anagrams
题目描述:写出一个函数 anagram(s, t)
判断两个字符串是否可以通过改变字母的顺序变成一样的字符串。
样例:
给出 s = "abcd"
,t="dcab"
,返回 true
.
给出 s = "ab"
, t = "ab"
, 返回 true
.
给出 s = "ab"
, t = "ac"
, 返回 false
.
解决思路:
方案一,统计字符的字数,循环遍历两个字符串的字符频数,看是否相等。
方案二,先将字符串排序,再比较字符串是否相同。
code1:
class Solution {
public:
/**
* @param s: The first string
* @param t: The second string
* @return: true or false
*/
bool anagram(string &s, string &t) {
// write your code here
int temp[256]={0};
if(s.empty()||t.empty()){
return false;
}
int lens=s.length();
int lent=t.length();
if(lens!=lent){
return false;
}
for(int i=0;i<lens;i++){
temp[s[i]]++;
temp[t[i]]--;
}
for(int i=0;i<256;i++){
if(temp[i]!=0){
return false;
}
}
return true;
}
};
code2:
class Solution {
public:
/**
* @param s: The first string
* @param t: The second string
* @return: true or false
*/
bool anagram(string &s, string &t) {
// write your code here
if(s.empty()||t.empty()){
return false;
}
if(s.length()!=t.length()){
return false;
}
sort(s.begin(),s.end());
sort(t.begin(),t.end());
if(s==t){
return true;
}
return false;
}
};
参考:https://algorithm.yuanbin.me/zh-hans/string/two_strings_are_anagrams.html