有效的变位词

        如果哈希表的键的取值范围是固定的,并且范围不是很大,则可以用数组来模拟哈希表。数组的下标和哈希表的键相对应,而数组的值和哈希表的值相对应。

        英文小写字母只有26个,因此可以用一个数组来模拟哈希表。

class Solution {
    public boolean isAnagram(String s, String t) {
        if(s.length() != t.length() || s.equals(t))
            return false;
        int[] arr = new int[26];
        for (char ch : s.toCharArray()){
            arr[ch - 'a']++;
        } 
        for (char ch : t.toCharArray()){
            arr[ch - 'a']--;
        }
        for (int a : arr){
            if(a != 0)
                return false;
        }
        return true;
    }
}

当然也可以用排序的方法做:首先判断字符串是否相等、长度是否不一致,如果相等或者长度不一致则直接返回 false,反之则继续判断两个字符串排序后是否相等。我们可以对字符串s和t分别排序,看排序后的字符串是否相等。

class Solution {
    public boolean isAnagram(String s, String t) {
        if (s.length() != t.length() || s.equals(t)) {
            return false;
        }
        char[] str1 = s.toCharArray();
        char[] str2 = t.toCharArray();
        Arrays.sort(str1);
        Arrays.sort(str2);
        return Arrays.equals(str1, str2);
    }
}

        一个unicode字符长度为16位,可以表示65536个字符。当然可以继续用长度为65536的数组来模拟哈希表,不过不建议,有点浪费内存。

        此时可以使用真正的哈希表Hashmap。

class Solution {
    public boolean isAnagram(String s, String t) {
        if (s.length() != t.length() || s.equals(t)) {
            return false;
        }
        Map<Character, Integer> counts = new HashMap<>();
        for (char ch : s.toCharArray()) {
            counts.put(ch, counts.getOrDefault(ch, 0) + 1);
        }
        for (char ch : t.toCharArray()) {
            if (!counts.containsKey(ch) || counts.get(ch) == 0){
                return false;
            }
            counts.put(ch,counts.get(ch) - 1);
        }

        return true;
    }
}

相关推荐

  1. 力扣-242. 有效字母异

    2024-05-25 20:56:24       46 阅读
  2. leetcode242. 有效字母异

    2024-05-25 20:56:24       41 阅读
  3. leetcode:32.有效字母异

    2024-05-25 20:56:24       36 阅读
  4. 【Leetcode】242.有效字母异

    2024-05-25 20:56:24       37 阅读
  5. Leetcode242.有效字母异

    2024-05-25 20:56:24       40 阅读
  6. 力扣:242. 有效字母异

    2024-05-25 20:56:24       35 阅读
  7. 242. 有效字母异(力扣LeetCode)

    2024-05-25 20:56:24       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-25 20:56:24       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-25 20:56:24       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-25 20:56:24       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-25 20:56:24       20 阅读

热门阅读

  1. Android.mk变量解析

    2024-05-25 20:56:24       12 阅读
  2. python爬虫[简易版]

    2024-05-25 20:56:24       11 阅读
  3. BUG分析报告模板

    2024-05-25 20:56:24       12 阅读
  4. Flask-SQLAlchemy的使用【一】

    2024-05-25 20:56:24       17 阅读
  5. AWS存储之 Storage Gateway

    2024-05-25 20:56:24       14 阅读
  6. Kafka

    2024-05-25 20:56:24       12 阅读
  7. 大模型框架:vLLM

    2024-05-25 20:56:24       15 阅读
  8. react基础

    2024-05-25 20:56:24       11 阅读
  9. okcc呼叫中心如何创建语音群呼(通知)功能?

    2024-05-25 20:56:24       12 阅读