代码随想录day5-有效的字母异位词

56 阅读1分钟

题目简介

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意: 若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

题目解法

题目就是要判断st两个字符串的出现频率是否相同,相同则返回true,不相同则返回false。也就是我们需要记录出现频率然后进行对比即可。也就是需要存储字符出现次数后,然后进行比对。有两种解决办法,第一种是哈希表,第二种是使用数组。两种方法相差不大,这里使用数组的方法进行统计。

代码实现

public boolean isAnagram(String s, String t) {
        //判断字符串是否相同
        if (s.equals(t))return true;
        //创建存储频率数组
        int[] ints = new int[26];
        for (int i = 0; i < s.length(); i++) {
            ints[s.charAt(i)-97]++;
        }
        for (int i = 0; i < t.length(); i++) {
            ints[t.charAt(i)-97]--;
        }
        for (int i = 0; i < ints.length; i++) {
            if (ints[i] != 0)return false;
        }
        return true;
    }

时间复杂度 O(n)取决于字符串的数量,空间复杂度O(1)和存储频率数组有关。