leetcode算法242.有效的字母异位词

简介: 本文介绍当给定两个字符串 s 和 t时 ,如何编写一个函数来判断 t 是否是 s 的字母异位词。

一、leetcode算法



1、有效的字母异位词


1.1、题目


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


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


示例 1:


输入: s = “anagram”, t = “nagaram”

输出: true


示例 2:


输入: s = “rat”, t = “car”

输出: false


提示:


1 <= s.length, t.length <= 5 * 104

s 和 t 仅包含小写字母


1.2、思路


思路一:本题因为是所有的小写字母一共只有26个,所以我们维护一个26长度的数组即可,通过遍历第一个字符串然后给数组赋值,通过遍历第二个字符串给数组减值,然后判断是否小于0,如果小于0则证明不是相同的字母次数。


1.3、答案


20.png


class Solution {
    public boolean isAnagram(String s, String t) {
        if(s.length() != t.length()){
            return false;
        }
        int[] table = new int[26];
        for(int i = 0; i < s.length(); i++){
            table[s.charAt(i) - 'a']++;
        }
        for(int j = 0; j < t.length(); j++){
            table[t.charAt(j) - 'a']--;
            if(table[t.charAt(j) - 'a'] < 0){
                return false;
            }
        }
        return true;
    }
}


复杂度分析


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


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


相关文章
|
30天前
|
存储 算法 JavaScript
怎么刷算法,leetcode上有哪些经典题目
怎么刷算法,leetcode上有哪些经典题目
15 0
|
1月前
|
算法 Java
[Java·算法·简单] LeetCode 27. 移除元素 详细解读
[Java·算法·简单] LeetCode 27. 移除元素 详细解读
23 1
|
1月前
|
算法 Java
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
22 0
|
1月前
|
算法 Java
[Java·算法·中等] LeetCode15. 三数之和
[Java·算法·中等] LeetCode15. 三数之和
30 0
存储 编译器 Linux
15 0
|
2天前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
|
4天前
【力扣】1832.判断句子是否为全字母句
【力扣】1832.判断句子是否为全字母句
|
1月前
leetcode热题100. 字母异位词分组
leetcode热题100. 字母异位词分组
15 0
|
1月前
|
算法 Java
[Java·算法·简单] LeetCode 28. 找出字符串中第一个匹配项的下标 详细解读
[Java·算法·简单] LeetCode 28. 找出字符串中第一个匹配项的下标 详细解读
21 0
|
1月前
|
算法 Java
[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读
[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读
20 0