网站构建的一般流程是什么,三网合一网站怎么做,上海百姓网,巫山网站开发文章目录 写在前面Tag题目来源题目解读解题思路方法一#xff1a;排序方法二#xff1a;哈希数组 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法#xff0c;两到三天更新一篇文章#xff0c;欢迎催更…… 专栏内容以分析题目为主#xff0c;并附带一些对于… 文章目录 写在前面Tag题目来源题目解读解题思路方法一排序方法二哈希数组 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法两到三天更新一篇文章欢迎催更…… 专栏内容以分析题目为主并附带一些对于本题涉及到的数据结构等内容进行回顾与总结文章结构大致如下部分内容会有增删 Tag介绍本题牵涉到的知识点、数据结构题目来源贴上题目的链接方便大家查找题目并完成练习题目解读复述题目确保自己真的理解题目意思并强调一些题目重点信息解题思路介绍一些解题思路每种解题思路包括思路讲解、实现代码以及复杂度分析知识回忆针对今天介绍的题目中的重点内容、数据结构进行回顾总结。 Tag
【排序】【哈希表】【数组】 题目来源
242. 有效的字母异位词 题目解读
两个字符串中每个字符出现的次数都是一样的则这两个字符串是字母异位词。现在需要判断给你的两个字符串是否为字符异位词。 解题思路
方法一排序
我们可以对两个字符串进行升序排序如果排序后两个字符相等则互为字母异位词返回 true否则返回 false。
实现代码
class Solution {
public:bool isAnagram(string s, string t) {sort(s.begin(), s.end());sort(t.begin(), t.end());return s t;}
};复杂度分析
时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn) n n n 为字符串 s 的长度。
空间复杂度 O ( n l o g n ) O(nlogn) O(nlogn)排序需要使用的额外空间。
方法二哈希数组
我们使用一个数组来统计字符串中出现的字母数量通常使用两个哈希数组分别统计两字符串中的字符数量最后再比较对应字符出现的数量是否一致。
但是现在可以只用一个哈希数组遍历 s 增加哈希数组中字符的数量遍历 t 减少哈希数组中对应字符的数量如果某个字符的数量小于 0 了直接返回 false如果直到遍历完毕 t 都没有遇到字符数量小于 0 的情况最后返回 true。
实现代码
class Solution {
public:bool isAnagram(string s, string t) {if (s.size() ! t.size()) return false;vectorint cnts(26, 0);for (char c : s) {cnts[c - a];}for (char c : t) {--cnts[c - a];if (cnts[c - a] 0) return false;}return true;}
};复杂度分析
时间复杂度 O ( n ) O(n) O(n) n n n 为字符串 s 的长度。
空间复杂度 O ( n O(n O(n哈希数组需要使用的额外空间。 写在最后
如果文章内容有任何错误或者您对文章有任何疑问欢迎私信博主或者在评论区指出 。
如果大家有更优的时间、空间复杂度方法欢迎评论区交流。
最后感谢您的阅读如果感到有所收获的话可以给博主点一个 哦。