242. 有效的字母异位词(leetcode每日打卡)

242. 有效的字母异位词

目录

题目描述

思路

题解


题目描述

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true
示例 2:

输入: s = "rat", t = "car"
输出: false

思路

从另一个角度考虑,t 是 s 的异位词等价于「两个字符串中字符出现的种类和次数均相等」。由于字符串只包含 26个小写字母,因此我们可以维护一个长度为 26的频次数组 table,先遍历记录字符串 s 中字符出现的频次,然后遍历字符串 t,减去 table 中对应的频次,如果出现 table[i]<0,则说明 t包含一个不在 s 中的额外字符,返回 false 即可。

题解

class Solution{

    public boolean isSucc(String s,String t){
//        char []ss=s.toCharArray();   
        char []tt=t.toCharArray();
        int[] arr=new int[26];
    for(int i=0;i<s.length();i++){arr[s.charAt(i)-'a']++;}
    for(int i=0;i<t.length();i++){arr[tt[i]-'a']--;}
    for(int i=0;i<arr.length;i++){if(arr[i]!=0){return false;}}
    
    return true;
    }

}

执行用时:3 ms, 在所有 Java 提交中击败了74.05%的用户

内存消耗:38 MB, 在所有 Java 提交中击败了98.48%的用户

通过测试用例:36 / 36

  • 时间复杂度:O(n),其中 n为 s的长度。

  • 空间复杂度:O(S),其中 S 为字符集大小,此处 S=26。

猜你喜欢

转载自blog.csdn.net/m0_60264772/article/details/121363945