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

目录
相关文章
|
7月前
|
Java C++ Python
leetcode-242:有效的字母异位词
leetcode-242:有效的字母异位词
51 0
|
算法
有效的字母异位词
有效的字母异位词
49 0
|
2月前
|
索引
【LeetCode 11】242.有效的字母异位词
【LeetCode 11】242.有效的字母异位词
19 0
【LeetCode 11】242.有效的字母异位词
|
6月前
|
存储
力扣经典150题第四十一题:有效的字母异位词
力扣经典150题第四十一题:有效的字母异位词
30 0
|
7月前
leetcode代码记录(有效的字母异位词
leetcode代码记录(有效的字母异位词
32 1
|
7月前
【力扣】242. 有效的字母异位词
【力扣】242. 有效的字母异位词
|
7月前
leetcode热题100. 字母异位词分组
leetcode热题100. 字母异位词分组
48 0
|
7月前
LeetCode 242. 有效的字母异位词
LeetCode 242. 有效的字母异位词
41 0
|
算法 程序员
力扣刷题-字母异位词分组
力扣刷题-字母异位词分组
|
C++ 索引
有效的字母异位词(力扣刷题)
有效的字母异位词(力扣刷题)
下一篇
DataWorks