题目描述:
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.
思路一:
O(n)
class Solution {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length())
return false;
int[] buckets = new int[26];
for (char c: s.toCharArray())
buckets[c - 'a']++;
for (char c: t.toCharArray())
buckets[c - 'a']--;
for (int i = 0; i < buckets.length; i++)
if (buckets[i] < 0)
return false;
return true;
}
}思路二:
class Solution {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length())
return false;
char[] schar = s.toCharArray();
char[] tchar = t.toCharArray();
Arrays.sort(schar);
Arrays.sort(tchar);
for (int i = 0; i < schar.length; i++)
if (schar[i] != tchar[i])
return false;
return true;
}
}
本文介绍了一种高效的算法来判断两个字符串是否为异位词。通过使用字符计数桶和排序比较两种方法,实现O(n)的时间复杂度。文章详细解释了每种方法的实现细节,并提供了完整的代码示例。
685

被折叠的 条评论
为什么被折叠?



