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

用自己服务器做网站用备案网络营销推广主要做什么

用自己服务器做网站用备案,网络营销推广主要做什么,做梯子的企业网站,做网站在哪里租服务器题目 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 数据范围 1 < s.length, p.length < 3 * 104 s 和 p 仅包含小写字母 样例 示例 1: 输入: s "cbaebabacd", p &quo…

题目

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

数据范围

1 <= s.length, p.length <= 3 * 104
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" 的异位词。

题解

博主题解(时间复杂度:O(m+(n−m)×Σ),其中 n 为字符串 s 的长度,m 为字符串 p 的长度,Σ 为所有可能的字符数(26个小写字母)。) 与官方题解思路一致,唯一区别就是写代码的习惯

class Solution {//记录遍历过程中的hash数组	static int at[];//记录p的哈希数组static int ap[];public List<Integer> findAnagrams(String s, String p) {at=new int[27];ap=new int[27];List<Integer> res=new LinkedList<>();if(s.length()<p.length())return res;int lenp=p.length();int lens=s.length();int ti=0;char cp[]=p.toCharArray();char cs[]=s.toCharArray();for(int i=0;i<cp.length;i++)ap[cp[i]-96]++;while(ti<lenp){at[cs[ti]-96]++;ti++;}if(check()){res.add(0);}int l=1;int r=lenp;while(r<lens){at[cs[l-1]-96]--;at[cs[r]-96]++;if(check())res.add(l);l++;r++;}return res;}public boolean check(){boolean flag=true;for(int i=1;i<=26;i++){if(ap[i]!=at[i]){flag=false;break;}}return flag;}
}

官方题解二(官方题解一与我的方法近乎一致,就不重复了,题解二时间复杂度O(n+m+Σ))

class Solution {public List<Integer> findAnagrams(String s, String p) {int sLen = s.length(), pLen = p.length();if (sLen < pLen) {return new ArrayList<Integer>();}List<Integer> ans = new ArrayList<Integer>();int[] count = new int[26];for (int i = 0; i < pLen; ++i) {++count[s.charAt(i) - 'a'];--count[p.charAt(i) - 'a'];}int differ = 0;for (int j = 0; j < 26; ++j) {if (count[j] != 0) {++differ;}}if (differ == 0) {ans.add(0);}for (int i = 0; i < sLen - pLen; ++i) {if (count[s.charAt(i) - 'a'] == 1) {  // 窗口中字母 s[i] 的数量与字符串 p 中的数量从不同变得相同--differ;} else if (count[s.charAt(i) - 'a'] == 0) {  // 窗口中字母 s[i] 的数量与字符串 p 中的数量从相同变得不同++differ;}--count[s.charAt(i) - 'a'];if (count[s.charAt(i + pLen) - 'a'] == -1) {  // 窗口中字母 s[i+pLen] 的数量与字符串 p 中的数量从不同变得相同--differ;} else if (count[s.charAt(i + pLen) - 'a'] == 0) {  // 窗口中字母 s[i+pLen] 的数量与字符串 p 中的数量从相同变得不同++differ;}++count[s.charAt(i + pLen) - 'a'];if (differ == 0) {ans.add(i + 1);}}return ans;}
}作者:力扣官方题解
链接:https://leetcode.cn/problems/find-all-anagrams-in-a-string/solutions/1123971/zhao-dao-zi-fu-chuan-zhong-suo-you-zi-mu-xzin/
来源:力扣(LeetCode

思路

这道题很简单,个人认为不应该列入普通难度,因为这道题近乎没有思维难度,题目描述就是解题方法,我们们要做的也就是遍历数组,用滑动窗口维持p字符串的空间,然后将窗口内的子串与p对比就行了。

博主的思路就是简单的用hash存储窗口的子串与目标串,然后自写check()方法判断是否相同(也可以用官方题解的Arrays.equal判断,博主事先不知道这个方法)。 这个方法虽然简单,但够用。两种复杂度也达标。

在这里插入图片描述

官方的解法二十分巧妙,进一步优化了时间复杂度,他节约了每次去对比子串的时间,用一个变量differ从头到尾维护子串与目标串不同字符的个数,从而更加节约时间。

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

相关文章:

  • 做网站推广选择什么最好营销方案包括哪些内容
  • php零基础做网站域名注册商
  • 永州市城乡建设规划局网站sem什么意思
  • 网页设计和网站开发有什么区别百度免费推广方法
  • vps云主机可以建立几个网站郑州网站营销推广
  • 做软件好还是做网站好seo教学培训
  • 网站章子怎么做搜索引擎优化是什么意思啊
  • 织梦cms可以做外贸网站吗株洲seo排名
  • 做设计找图有哪些网站有哪些营销策划机构
  • 哈尔滨定制网站建设抖音关键词排名
  • 建设网站价格福州排名seo公司
  • 温州网站建设怎么样关键字排名软件官网
  • 烟台网站制作策划2023年第三波疫情9月
  • 网站建设需要个体营业执照seo产品是什么意思
  • 广告设计公司的未来搜索引擎排名优化方法
  • ppt做杂志模板下载网站十大接单推广平台
  • 温州注册网络公司价格多少站长工具 seo查询
  • 网站的验证码是怎么做的南宁百度推广seo
  • 公司网站怎么做关键字电商怎么注册开店
  • 网站建设推广方案临沂seo代理商
  • 什么软件能把做的网站上传深圳网络优化推广公司
  • 免费网站自动跳转哈尔滨网络优化推广公司
  • 琼海建设网站seo标题优化关键词
  • 网站视频怎么做的好最近新闻内容
  • 天津的网站建设公司制作网页多少钱
  • 水冶那里有做网站的百度竞价多少钱一个点击
  • 西安知名网站建设青岛网站制作设计
  • 做的最好的epub网站集团网站推广
  • 本地建设网站软件下载sem和seo有什么区别
  • 哈尔滨高端网页设计北京网站seo技术厂家