[LeetCode]242. 有效的字母异位词(java实现)
1. 题目
2. 读题(需要重点注意的东西)
解法1:首先能想到一个解法是暴力法,即用暴力循环;时间复杂度为O(n2)。
解法2:使用哈希表。主要思路是用哈希集合存储字符串中字母出现的次数,然后进行比较。由于只有26个字母,因此使用数组来代替哈希表来求解,更简单。数组可视为一种简化版的哈希表。
3. 解法
解法2:
class Solution {
// 字母异位词:两个字符串中每个字符出现的次数都相同
// 定义两个长为26的数组,记录字母出现的次数;
public boolean isAnagram(String s, String t) {
int[] res = new int[26];
// 记录s中字母出现的次数
for(char c : s.toCharArray()){
res[c -'a']++;
}
// 记录t中字母出现的次数,不过此处用减来同时进行数量比较
for(char c : t.toCharArray()){
res[c -'a']--;
}
// 遍历数组,要是有不为0的值,则说明字母出现的次数不同
for(int n : res){
if(n != 0){
return false;
}
}
return true;
}
}
代码解释可在Java数据结构—String(字符串及其常用操作)中得到介绍
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
6. 总结
掌握好字符串迭代遍历的方法
for(char c : t.toCharArray()){
// 所要进行的操作
}