Given two strings s and t, write a function to determine if t is an anagram of s.
For example,
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.
Note:
You may assume the string contains only lowercase alphabets.
题目大意:比较两个字符串是否有相同的字母个数组成。
解题思路:这里想到两种方法。
思路一:
建立一个表,记录字符串s里每个字符的个数,再与字符串t比对。
思路二:
将两个字符串的元素排序,然后比较大小。
首先是思路二的代码,提示TLE,可能是用冒泡排序导致时间复杂度过高,有空再修改
class Solution {
public:
bool isAnagram(string s, string t) {
char* sArray = new char(s.length()+1);
char* tArray = new char(t.length()+1);
sprintf(sArray ,"%s" , s.c_str());
sprintf(tArray ,"%s" , t.c_str());
BubbleSort(sArray,s.length()+1);
BubbleSort(tArray,t.length()+1);
s = sArray;
t = tArray;
return s==t;
}
void BubbleSort(char *p,int n)
{
for(int i = 0;i < n;i++)
{
for(int j = 0;j < n-i-1;j++)
{
if(p[j] > p[j+1])
{
char tmp = p[j];
p[j] = p[j+1];
p[j+1] = tmp;
}
}
}
}
};