leetcodet题解:242.有效的字母异位词

简介: leetcodet题解:242.有效的字母异位词

242. 有效的字母异位词

给定两个字符串 *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
  • st 仅包含小写字母

思路

t 是 s 的异位词等价于「两个字符串排序后相等」。因此我们可以对字符串 s 和 t 分别排序,看排序后的字符串是否相等即可判断。此外,如果 s 和 t 的长度不同,t 必然不是 s 的异位词。

复杂度分析

时间复杂度:O(nlog⁡n),其中 n 为 s 的长度。排序的时间复杂度为 O(nlogn),比较两个字符串是否相等时间复杂度为 O(n),因此总体时间复杂度为 O(nlog⁡n+n)

空间复杂度:O(log⁡n)。排序需要 O(log⁡n) 的空间复杂度。注意,在某些语言(比如 Java & JavaScript)中字符串是不可变的,因此我们需要额外的O(n) 的空间来拷贝字符串。但是我们忽略这一复杂度分析,因为:

这依赖于语言的细节;

这取决于函数的设计方式,例如,可以将函数参数类型更改为 char[]。

题解

class Solution {
public:
    bool isAnagram(string s, string t) {
        if (s.size() != t.size()) return false;
        sort(s.begin(), s.end());
        sort(t.begin(), t.end());
        return s == t;        
    }
};

推荐学习 https://xxetb.xetslk.com/s/p5Ibb

目录
相关文章
|
6月前
|
Java C++ Python
leetcode-242:有效的字母异位词
leetcode-242:有效的字母异位词
48 0
|
1月前
|
索引
【LeetCode 11】242.有效的字母异位词
【LeetCode 11】242.有效的字母异位词
15 0
【LeetCode 11】242.有效的字母异位词
|
6月前
【力扣】242. 有效的字母异位词
【力扣】242. 有效的字母异位词
|
6月前
LeetCode 242. 有效的字母异位词
LeetCode 242. 有效的字母异位词
36 0
|
Shell
【Leetcode -342. 4的幂 -344.反转字符串 -345.反转字符串中的元音字母】
【Leetcode -342. 4的幂 -344.反转字符串 -345.反转字符串中的元音字母】
42 0
Leecode 242. 有效的字母异位词
Leecode 242. 有效的字母异位词
63 0
|
C++ 索引
有效的字母异位词(力扣刷题)
有效的字母异位词(力扣刷题)
|
算法 索引
LeetCode每日1题--有效的字母异位词
LeetCode每日1题--有效的字母异位词
67 0
|
存储 算法 Java
LeetCode:242. 有效的字母异位词
给定两个字符串s和t,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
每日一题:Leetcode49 字母异位词分组
每日一题:Leetcode49 字母异位词分组