当前位置: 首页 > wzjs >正文

东莞商城网站建设哪家公司靠谱经典seo伪原创

东莞商城网站建设哪家公司靠谱,经典seo伪原创,广西 网站开发,如何让网站互动起来🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…

在这里插入图片描述


🧠 题目解析

题目描述:

给定两个字符串 sp,找出 s 中所有 p字母异位词的起始索引。

返回的答案以数组形式表示。

字母异位词定义:
若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为字母异位词。
例如:"abc""bca" 是异位词;"aab""aba" 也是。


✅ 解法一:定长滑动窗口 + 计数数组比较

基本思路:

  • 使用两个数组分别统计 ps 某个长度为 p.length() 的子串的字母频次。
  • 每次滑动窗口右移一位,更新窗口内的字符频次,并比较两个数组是否相等。
  • 若频次完全相同,则说明当前窗口是 p 的一个异位词。

🔍 C++ 实现

class Solution {
public:vector<int> findAnagrams(string s, string p) {vector<int> ans;if (s.length() < p.length()) return ans;array<int, 26> cnt_p{}; // 存 p 中每个字母的出现次数array<int, 26> cnt_s{}; // 存 s 当前窗口中每个字母的出现次数for (char c : p) {cnt_p[c - 'a']++;}for (int i = 0; i < s.length(); ++i) {cnt_s[s[i] - 'a']++; // 当前字符进入窗口if (i >= p.length()) {// 超出窗口长度,移除最左字符cnt_s[s[i - p.length()] - 'a']--;}if (cnt_s == cnt_p) {// 当前窗口字符频次与 p 相同,记录左边界ans.push_back(i - p.length() + 1);}}return ans;}
};

🧮 复杂度分析

  • 时间复杂度: O(n),n 为 s 的长度,数组比较常数级。
  • 空间复杂度: O(1),使用两个长度为 26 的数组。

✅ 解法二:滑动窗口 + 字符差值平衡法

核心思想:

  • 维护一个字符差值数组 cnt[26],初始记录 p 中每个字符出现次数。
  • 当字符进入窗口时,对应计数减一;字符离开时加一。
  • 如果窗口中字符完全匹配,cnt 中所有值为 0。

🔍 C++ 实现

class Solution {
public:vector<int> findAnagrams(string s, string p) {vector<int> ans;if (s.length() < p.length()) return ans;int cnt[26] = {0}; // 差值数组// 初始化 p 的频次for (char c : p) {cnt[c - 'a']++;}int left = 0;for (int right = 0; right < s.length(); ++right) {int idx = s[right] - 'a';cnt[idx]--; // 当前字符进入窗口// 如果某个字母用得太多,收缩左边界while (cnt[idx] < 0) {cnt[s[left] - 'a']++;left++;}// 若窗口长度等于 p 的长度,则说明是异位词if (right - left + 1 == p.length()) {ans.push_back(left);}}return ans;}
};

⚙️ 工作流程示意:

每次移动窗口,都:

  1. 加入一个新字符(右指针);
  2. 若出现次数超出,则移动左指针缩减窗口;
  3. 判断窗口大小是否等于 p.length(),若是且匹配,则记录起始索引。

🔍 为什么用数组而不是 unordered_map?

  • 数组比 unordered_map 更快,因为操作字符时用 char - 'a' 转索引非常高效。
  • 我们仅处理小写字母(a-z),长度固定 26,用数组更节省空间、运行更快。

✨ 总结对比

解法原理时间复杂度空间复杂度特点
解法一滑动窗口 + 频次比较O(n)O(1)简洁直观
解法二差值滑动窗口O(n)O(1)更快的收缩

http://www.dtcms.com/wzjs/452327.html

相关文章:

  • 为什么做网站能赚钱郑州网站建设公司
  • 重庆建筑行业认证培训网陕西网站seo
  • 怎么获取网站数据做统计搜索引擎营销特点是什么
  • 人才招聘网最新招聘信息如何对一个网站进行seo
  • 网站制作策划建设大纲网站搭建工具
  • 在国外网站建设潍坊网站模板建站
  • 小学网站建设方案书seo白帽优化
  • 网站建设客户问题湖南官网网站推广软件
  • 上海公司官网重庆百度推广关键词优化
  • vscode 网站开发最新新闻热点事件摘抄
  • wordpress+国内不使用企业怎么做好网站优化
  • 企业网站的做seo软件下载
  • 商务网站开发考卷网站不收录怎么解决
  • 网站建设是怎么赚钱的深圳谷歌seo推广
  • 电器网站建设目的西安百度竞价托管公司
  • 阿里云零基础网站建设教学济南seo优化
  • 济南哪里做网站好聚合广告联盟
  • 专业的设计网站百度广告联盟官网
  • 管家通库存管理软件昆明网站seo服务
  • epcms网站模板广东省各城市疫情搜索高峰进度
  • 深圳民治做网站百度收录时间
  • 网站建设运维情况查网站
  • 咸阳网站建设哪家专业竞价广告代运营
  • 可以做兼职的网站seo关键词推广公司
  • wordpress网站打开卡互联网营销师培训机构
  • 网站未备案做seo会被k吗软文范例大全800
  • 温州网站建设哪家好哪个浏览器看黄页最快夸克浏览器
  • 网站建设完成的时间媒体吧软文平台
  • 免费创建论坛网站seo关键词排名技术
  • 服装设计资源网站淘宝定向推广