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。


相关文章
|
9月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
存储 算法
LeetCode第49题字母异位词分组
LeetCode第49题"字母异位词分组"的解题方法,通过将每个字符串的字符排序后作为键存储在HashMap中,有效地将所有字母异位词分组。
LeetCode第49题字母异位词分组
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
244 0
|
存储 算法 Go
【LeetCode 热题100】17:电话号码的字母组合(详细解析)(Go语言版)
LeetCode 17题解题思路采用回溯算法,通过递归构建所有可能的组合。关键点包括:每位数字对应多个字母,依次尝试;递归构建下一个字符;递归出口为组合长度等于输入数字长度。Go语言实现中,使用map存储数字到字母的映射,通过回溯函数递归生成组合。时间复杂度为O(3^n * 4^m),空间复杂度为O(n)。类似题目包括括号生成、组合、全排列等。掌握回溯法的核心思想,能够解决多种排列组合问题。
584 11
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
467 4
|
算法
测试工程师的技能升级:LeetCode算法挑战与职业成长
这篇文章通过作者亲身体验LeetCode算法题的过程,探讨了测试工程师学习算法的重要性,并强调了算法技能对于测试职业成长的必要性。
440 1
测试工程师的技能升级:LeetCode算法挑战与职业成长
|
算法
每日一道算法题(Leetcode 20)
每日一道算法题(Leetcode 20)
341 2
|
存储
Leetcode第49题(字母异位词分组)
LeetCode第49题要求将字符串数组中的字母异位词分组,可以通过将每个字符串排序后作为键存入哈希表,最后将哈希表中的值添加到结果列表中来实现。
217 1
|
算法
Leetcode第十七题(电话号码的字母组合)
这篇文章介绍了如何使用深度优先搜索(DFS)算法来解决LeetCode第17题——电话号码的字母组合问题,通过递归方法生成所有可能的字母组合。
243 0
Leetcode第十七题(电话号码的字母组合)
|
索引
【LeetCode 11】242.有效的字母异位词
【LeetCode 11】242.有效的字母异位词
193 0
【LeetCode 11】242.有效的字母异位词

热门文章

最新文章