美文网首页
leetcode242.有效的字母异位词

leetcode242.有效的字母异位词

作者: 憨憨二师兄 | 来源:发表于2020-05-02 22:07 被阅读0次

题目链接

思路一:sort

对于本题,最简单暴力的方法就是将两个字符串排序之后依次进行比对,代码如下:

class Solution {
    public boolean isAnagram(String s, String t) {
        if(s.length() != t.length()){
            return false;
        }
        char[] chs1 = s.toCharArray();
        char[] chs2 = t.toCharArray();

        Arrays.sort(chs1);
        Arrays.sort(chs2);

        for(int i = 0;i < chs1.length;i++){
            if(chs1[i] != chs2[i]){
                return false;
            }
        }
        return true;
    }
}

排序的时间复杂度为O(nlogn),所以本题的时间复杂度即为O(nlogn),因为额外开辟了数组空间,所以额外空间复杂度为O(n)。
代码运行结果:


思路二:Hash

利用哈希思想进行求解,代码如下:

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

        int[] map = new int[26];

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

        for(int i = 0;i < map.length;i++){
            if(map[i] != 0){
                return false;
            }
        }
        return true;
    }
}

使用哈希表的思想,使用长度为26的数组模拟HashMap,key表示26个小写字母,value则表示每个字母出现的次数,第一次遍历将字符串s对应的每个字符的个数做加法,将字符串t对应的每个字符做减法,然后遍历一次map,判断每个key对应的value是否为0即可,时间复杂度为O(n),额外空间复杂度为O(1),因为无论字符串有多长,我们每次只需要开辟26个长度的数组空间即可,这个值是固定的。
执行结果如下:


也不知道为什么耗费的时间更多了~(逃

相关文章

  • leetcode242.有效的字母异位词

    题目链接 思路一:sort 对于本题,最简单暴力的方法就是将两个字符串排序之后依次进行比对,代码如下: 排序的时间...

  • LeetCode242. 有效的字母异位词

    原题链接 思路:定义一个长度为26的数组,遍历第一个串,每有一个字符,就在对应的位置上+1 然后开始遍历第二个串,...

  • leecode刷题(14)-- 有效的字母异位词

    leecode刷题(14)-- 有效的字母异位词 有效的字母异位词 描述: 给定两个字符串 s 和 t ,编写一个...

  • 有效的字母异位词

    给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 示例 1: 示例 2: 说明...

  • 有效的字母异位词

    给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "ana...

  • 有效的字母异位词

    给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 示例 1: 输入: s = ...

  • 有效的字母异位词

    有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 示例 1:...

  • 有效的字母异位词

    给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 示例 2: 说明:你...

  • 有效的字母异位词

    题目描述 难度级别:简单 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 ...

  • 算法时间 III

    1. 有效的字母异位词[https://leetcode.cn/problems/valid-anagram/] ...

网友评论

      本文标题:leetcode242.有效的字母异位词

      本文链接:https://www.haomeiwen.com/subject/xqplghtx.html