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

淘宝客怎么做直播网站吗苹果要做搜索引擎

淘宝客怎么做直播网站吗,苹果要做搜索引擎,深圳做网站网络公司,网站建设流程教案给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s “cbaebabacd”, p “abc” 输出: [0,6] 解释: 起始索引等于 0 的子串是 “cba”, 它是 “abc” 的异位词。 起始索引等于…

给定两个字符串 s 和 p,找到 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 3 * 10^4 3104
s 和 p 仅包含小写字母


知识点:
定长滑动窗口、数组、字符串


解:
这道题有多种实现方式:①定长滑动窗口;②不定长滑动窗口。这里实现的是①定长滑动窗口。
核心思想是:统计字符的出现次数,若s的子串、p中的所有字符的出现次数相同,则当前滑动窗口内的子串是异位词。

首先,获取两个字符串长度,提高后续代码的可读性。

然后,这里定义了两个数组,分别存储字符串s、p中各个字符的出现次数,因此数组大小分别是26,记录所有字母(26个)。使用数组而不是前面题目使用的HashMap,因为要对元素在或不在Map中进行分类讨论,没有数组的操作简单便利。

接着,若字符串s的长度<字符串p的长度,则必不存在异位词,因为无法从s中找到一个比自身还长的子串。

然后,遍历p的每个字符,统计各个字符的出现次数:cntP[p.charAt(i) - 'a']++;

然后,遍历s的每个字符,这里用滑动窗口右边界,控制滑动窗口的内容。这里的核心思路是:
获取当前滑动窗口的左边界,用start表示。因为是定长,所以右边界end-n+1即为左边界的下标。
若左边界<0,表示此时尚未开始判断,即,滑动窗口还没到达指定大小
对于新加入滑动窗口的元素(右边界指向的元素),将数组中对应字符的出现次数+1
判断此时两个数组是否相等。若相等,表明当前滑动窗口内的子串、p中各个字符的出现次数是相同的,因此当前滑动窗口内的子串就是异位词。
更新滑动窗口,对于离开滑动窗口的元素(左边界指向的元素),将数组中对应字符的出现次数-1

时间复杂度:O(∣Σ∣m)。Arrays.equals()时间复杂度是O(∣Σ∣),总共遍历m个元素。
空间复杂度:O(∣Σ∣)。因为两个数组各存储了26个字母
∣Σ∣=包含的字符的数量

class Solution {public List<Integer> findAnagrams(String s, String p) {//核心:定长滑动窗口,统计字母的出现次数,若s、p的字母出现次数相同,则是异位词List<Integer> res = new ArrayList<>();//获取字符串s、p的长度int m = s.length();int n = p.length();//定义数组,存储字符的出现次数(比HashMap的操作更方便)int[] cntS = new int[26];int[] cntP = new int[26];//特殊情况判断,直接返回空列表if (m < n)return res;//统计p的每个字符的出现次数for (int i = 0; i < n; i++) {cntP[p.charAt(i) - 'a']++;}//用滑动窗口右边界控制子串for (int end = 0; end < m; end++) {//获取滑动窗口左边界int start = end - n + 1;//新加入滑动窗口的元素(end指向的元素):出现次数+1cntS[s.charAt(end) - 'a']++;//若左边界<0,表示此时还没到开始判断的时候if (start < 0) {continue;}//判断s子串、p的每个字符出现次数是否相等,若相等表示当前滑动窗口内的子串是异位词if (Arrays.equals(cntS, cntP)) {res.add(start);//将异位词的起始下标加入结果列表}//更新滑动窗口,离开滑动窗口的元素(start指向的元素):出现次数-1cntS[s.charAt(start) - 'a']--;}return res;}
}

参考:
1、灵神解析

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

相关文章:

  • 怎样做网站域名注册优化网站排名解析推广
  • 长沙做网站哪家好最近新闻报道
  • 做网站江西上海seo公司哪家好
  • 代做网站怎么进行域名备案河南省人民政府
  • 这么联系做网站推广谷歌浏览器下载电脑版
  • 贞丰县住房和城乡建设局网站成品短视频app下载有哪些软件
  • 培训行业网站建设是什么苏州疫情最新消息
  • 新闻门户网站建设南京网络优化公司有哪些
  • 做网站时兼容分辨率中文网站排行榜
  • 网站建设需求调研表有产品怎么找销售渠道
  • 创建wordpress小工具福州seo推广公司
  • wordpress 闭站互联网营销怎么做
  • 做淘客网站需要多大空间刚刚发生了一件大事
  • 笑话网站html模板旺道网站优化
  • 如何做网站资讯沈阳网络关键词排名
  • 网站首页做的好看在线制作网站免费
  • 家装网站自己做的站长之家音效素材
  • 网站建设公司 南京东莞专业网站推广工具
  • 网站首页设计过程长春做网站推广的公司
  • o2o网站平台怎么做可以商用的电视app永久软件
  • web网站发布怎么做创建网站平台
  • 广东自助建站网站发表文章的平台有哪些
  • 宝鸡门户网站开发下载百度网盘搜索引擎盘多多
  • 郴州 网站建设百度竞价开户费用
  • 怎么在app中嵌入h5页面全网营销与seo
  • 网站模板中企动力alexa排名查询
  • 网页访问限制怎么解除自己怎么优化我网站关键词
  • 做站群的网站要备案吗seo整站排名
  • 网站建设定制公司怎么去推广一个app
  • 门户网站的流程自媒体推广