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

网站开发大全好素材网站

网站开发大全,好素材网站,建设银行官方网站首页入口,wordpress大题目要求 给定两个字符串 s 和 p,找到 s 中所有 p 的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次。 示例 1 输入:s…

题目要求

给定两个字符串 sp,找到 s 中所有 p 的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次。

示例 1

输入:s = "cbaebabacd", p = "abc"
输出:[0,6]
解释:
起始索引等于 0 的子串是 "cba",它是 "abc" 的异位词。
起始索引等于 6 的子串是 "bac",它是 "abc" 的异位词。

示例 2

输入:s = "abab", p = "ab"
输出:[0,1,2]
解释:
起始索引等于 0 的子串是 "ab",它是 "ab" 的异位词。
起始索引等于 1 的子串是 "ba",它是 "ab" 的异位词。
起始索引等于 2 的子串是 "ab",它是 "ab" 的异位词。

提示

1 <= s.length, p.length <= 3 * 10^4
s 和 p 仅包含小写字母

实际应用

文本处理领域

假设我们有一个长文本文件,我们希望找到所有包含特定关键词的不同排列组合的子串。

例如,我们在一篇科学论文中查找包含关键词 "study""analysis""results" 的所有排列组合的句子。

数据清洗与分析领域

假设我们有一个 DNA 序列,我们希望查找所有包含特定碱基对(如 "ATCG")的异位词的子序列。这在基因序列分析中非常有用,帮助识别具有相同碱基分布的模式。

滑动窗口法

要求在字符串 s 中找出所有与字符串 p 的字符频率相同的子串。

关键在于高效地比较 s 中每个可能子串的字符频率与 p 的字符频率是否相同。

哈希表记录字符频率

#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;vector<int> findAnagrams(string s, string p)
{unordered_map<char, int> need, window;for (char c : p)need[c]++;int left = 0, right = 0, valid = 0;vector<int> res; // 记录结果while (right < s.size()){char c = s[right];right++;// 进行窗口内数据的一系列更新if (need.count(c)){window[c]++;if (window[c] == need[c])valid++;}// 判断左侧窗口是否要收缩while (right - left >= p.size()){// 当窗口符合条件时,把起始索引加入结果集if (valid == need.size())res.push_back(left);char d = s[left];left++;// 进行窗口内数据的一系列更新if (need.count(d)){if (window[d] == need[d])valid--;window[d]--;}}}return res;
}int main(){string s = "cbaebabacd";string p = "abc";vector<int> res = findAnagrams(s,p);for(auto i:res){cout<<i<<endl;}return 0;
}

数组记录字符频率

#include <iostream>
#include <vector>
using namespace std;vector<int> findAnagrams(string s, string p)
{vector<int> need(26, 0);vector<int> window(26, 0);for (char c : p){need[c - 'a']++;}int left = 0, right = 0, valid = 0;vector<int> res;// required表示窗口中需要满足的字符种类数int required = 0;for (int i = 0; i < 26; ++i){if (need[i] > 0){required++;}}while (right < s.size()){char c = s[right];right++;if (need[c - 'a'] > 0){window[c - 'a']++;// 当窗口中某个字符的数量等于需要的数量时,valid++if (window[c - 'a'] == need[c - 'a']){valid++;}}// 当窗口大小等于p的长度时,判断是否需要收缩while (right - left >= p.size()){// 当窗口中满足要求的字符种类数等于required时,将窗口的起始位置加入结果if (valid == required){res.push_back(left);}char d = s[left];left++;if (need[d - 'a'] > 0){// 当窗口中某个字符的数量等于需要的数量时,valid--if (window[d - 'a'] == need[d - 'a']){valid--;}window[d - 'a']--;}}}return res;
}int main()
{string s = "cbaebabacd";string p = "abc";vector<int> res = findAnagrams(s, p);for (auto i : res){cout << i << endl;}return 0;
}

推荐一下

https://github.com/0voice

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

相关文章:

  • 柳州住房城乡建设厅官方网站网站如何备份数据
  • 可以做h5游戏的网站公司注册地址备案流程
  • 响应式网站做seo怎么样门面装修设计方案
  • 小程序跳转到网站网站建设的公司名称
  • 新手怎么做网站郑州网站制作咨询
  • 辽宁省交通建设投资集团官方网站wordpress怎么修改模板文件
  • 广州手机端网站制作泉州网站设计理念培训
  • 网站建设风格总结电商网站建设网络公司
  • 高端网站建设公司兴田德润在那里wordpress 网页路径
  • 免费的网站管理系统wordpress 中文模版
  • 旅游网站系统哪个好网站统计代码怎么弄
  • 在青岛做阿里巴巴网站找谁国人原创wordpress主题
  • 广州市住房城乡建设部门户网站网站建设规划ppt模板
  • 网站设计一般包括什么深圳网站开发招聘
  • php网站开发 vip一个网站交互怎么做
  • wordpress 导入网站怎么制作网站设计图片
  • 免费的个人网站怎么做电力建设期刊 网站无法访问
  • 网站建设维护是做什么会计科目世界500强企业排行榜中国企业
  • 计算机论文seo博客是什么意思
  • 梦幻西游官方网站怎样删除网站
  • 开发网站现实网络传输失败企业网站搭建及优化
  • 成品网站nike源码1688免费永久免费建站网站
  • 免费建立个人网站凡科wordpress升级文章编辑器
  • 建设一个网站思路wordpress 摄影国内
  • 有做网站动态效果软件站长之家排行榜
  • 推广员网站怎么做珲春市建设局网站是多少
  • 27寸显示器网站建设wordpress视频模板下载
  • 东莞高端网站建设收费标准河南省住房和城乡建设厅官方网站
  • 人员调动在网站上怎么做南昌房地产网站建设
  • 合理规划网站怎么在企业站建立网站吗