【力扣】242. 有效的字母异位词

题目:242. 有效的字母异位词

解题思路

  • 依次遍历s和t,将s中出现的字符依次填入哈希表中,出现一次则加1;
  • 将t中出现的字符依次从哈希表中删去,出现一次则减1;
  • 最后判断哈希表中是否有小于0的元素,若小于0则返回false,否则返回true。

C代码实现

bool isAnagram(char * s, char * t){
    int len_s = strlen(s), len_t = strlen(t);
    if(len_s != len_t){
        return false;
    }
    
    // 设置哈希表,初始化为0
    int hashTable[26] = {0};

    // 将s中的各字符出现次数依次  填入  哈希表对应的格子中
    for(int i=0;i<len_s;i++){
        hashTable[s[i] - 'a']++;
    }

    // 将t中的各字符依次从哈希表对应的格子中  删去
    for(int i=0;i<len_t;i++){
        hashTable[t[i] - 'a']--;
        if(hashTable[t[i] - 'a'] < 0){
            return false;
        }
    }
    return true;
}

Java代码实现--数组

class Solution {
    public boolean isAnagram(String s, String t) {
        int len1 = s.length();
        int len2 = t.length();
        if(len1 != len2) {
            return false;
        }

        int[] res = new int[26];
        for(int i=0; i<len1; i++) {
            res[s.charAt(i) - 'a']++;
        }

        for(int i=0; i<len2; i++) {
            res[t.charAt(i) - 'a']--;
        }

        for(int i=0; i<26; i++) {
            if(res[i] < 0) {
                return false;
            }
        }

        return true;
    }
}

Java代码实现--hashMap

class Solution {
    public boolean isAnagram(String s, String t) {
        int len1 = s.length();
        int len2 = t.length();
        if(len1 != len2) {
            return false;
        }

        HashMap<Character, Integer> hashmap = new HashMap<>();
        for(int i=0; i<len1; i++) {
            char c1 = s.charAt(i);
            if(hashmap.containsKey(c1)) {
                // hashMap中包含当前字符
                hashmap.replace(c1, hashmap.get(c1)+1);
            } else {
                // hashMap中不包含当前字符
                hashmap.put(c1, 1);
            }
        }

        for(int j=0; j<len2; j++) {
            char c2 = t.charAt(j);
            if(hashmap.containsKey(c2)) {
                hashmap.replace(c2, hashmap.get(c2)-1);
                if(hashmap.get(c2) < 0) {
                    return false;
                }
            } else {
                return false;
            }
        }

        return true;
    }
}

参考资料:

  1. 242. 有效的字母异位词
  2. Java HashMap
posted @ 2024-05-22 21:22  是你亦然  阅读(2)  评论(0编辑  收藏  举报