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

免费个人网站源码下载班级优化大师手机版下载

免费个人网站源码下载,班级优化大师手机版下载,怎么制作一个app应用,wordpress怎么建立二级菜单一、背景知识 滑动窗口算法(Sliding Window): 在给定数组 / 字符串上维护一个固定长度或不定长度的窗口。可以对窗口进行滑动操作、缩放操作,以及维护最优解操作。题型一:固定长度题型二:不固定长度 二、例…

一、背景知识

  • 滑动窗口算法(Sliding Window)
    • 在给定数组 / 字符串上维护一个固定长度或不定长度的窗口。可以对窗口进行滑动操作、缩放操作,以及维护最优解操作。
    • 题型一:固定长度
    • 题型二:不固定长度

 二、例题

1、无重复字符的最长子串(不定长度)

写法一: 我的答案

class Solution {public int lengthOfLongestSubstring(String s) {if(s.length()==0){return 0;}int l=0;//左指针int r=0;//右指针int maxLen=1;List<Character> list=new ArrayList<>();while(r<s.length() && l<s.length()){if(!list.contains(s.charAt(r))){list.add(s.charAt(r));//窗口右侧扩张maxLen=Math.max(maxLen,r-l+1);//维护一个子串长度的最大值r++;}else{int index=list.indexOf(s.charAt(r));//在窗口里查找被重复的字符的下标delItems(index,list);//把重复字符及其以前的字符移出窗口l=l+index+1;//窗口左侧收缩}}return maxLen;}//public void delItems(int end,List list){while(end>=0){//从后往前删list.remove(end);end--;}}
}

写法二: 官方答案

外循环(for)枚举字符串s的所有字符,当作滑动窗口的左边界,进入内循环(while)后,不断往右移,直到遇到重复的字符后,跳出内循环。

更新最长子串长度,删除滑动窗口最左边的一个元素。

如果该元素不是被重复的元素,就不会再次进入内循环,而是一直在外循环徘徊,一个接一个地删掉滑动窗口最左边的元素,直到删掉那个被重复的元素

class Solution {public int lengthOfLongestSubstring(String s) {// 哈希集合,记录每个字符是否出现过,相当于滑动窗口Set<Character> occ = new HashSet<Character>();int n = s.length();// 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动int rk = -1, ans = 0;for (int i = 0; i < n; ++i) {if (i != 0) {// 左指针向右移动一格,哈希集合移除一个字符occ.remove(s.charAt(i - 1));}while (rk + 1 < n && !occ.contains(s.charAt(rk + 1))) {// 不断地移动右指针,哈希集合增加一个字符 occ.add(s.charAt(rk + 1));++rk;}// 第 i 到 rk 个字符是一个极长的无重复字符子串// rk-i+1为当前滑动窗口内的子串长度ans = Math.max(ans, rk - i + 1);}return ans;}
}

2、找到字符串中所有字母异位词

该题用排序法会超时,用链表或哈希表会超出内存限制 

写法一:

突破点:

在字符串 s中构造一个长度为与字符串 p的长度相同的滑动窗口,并在滑动中维护窗口中每种字母的数量;当窗口中每种字母的数量与字符串 p中每种字母的数量相同时,则说明当前窗口为字符串 p的异位词。

class Solution {public List<Integer> findAnagrams(String s, String p) {int sLen = s.length(), pLen = p.length();//当字符串 s 的长度小于字符串 p 的长度时,字符串 s 中一定不存在字符串 p 的异位词if (sLen < pLen) {return new ArrayList<Integer>();}List<Integer> ans = new ArrayList<Integer>();int[] sCount = new int[26];//计算字符串s中26个字母出现的个数int[] pCount = new int[26];//计算字符串p中26个字母出现的个数for (int i = 0; i < pLen; ++i) {++sCount[s.charAt(i) - 'a'];++pCount[p.charAt(i) - 'a'];}if (Arrays.equals(sCount, pCount)) {//两个数组相等,找到异位词ans.add(0);//记录初始下标}//窗口开始滑动for (int i = 0; i < sLen - pLen; ++i) {//用滑动窗口遍历字符串s--sCount[s.charAt(i) - 'a'];//滑动窗口左边界收缩,sCount数组里该字母的个数减1++sCount[s.charAt(i + pLen) - 'a'];//滑动窗口右边界扩张,sCount数组里该字母的个数加1if (Arrays.equals(sCount, pCount)) {//找到异位词ans.add(i + 1);}}return ans;}
}

http://www.shuangfujiaoyu.com/news/18278.html

相关文章:

  • 成都网站网络公司磁力猫最好磁力搜索引擎
  • 汽车网站建设论坛网络优化seo薪酬
  • 做介绍美食网站的菜单的怎样推广自己的app
  • 网站日常推广怎么做东莞百度推广优化公司
  • 做网站需要买服务器吗百度外推代发排名
  • 官方网站建设需求规格说明书客户推广渠道有哪些
  • 专业上海网站建设公司东莞做网站的公司吗
  • 网站建设教学长沙快速排名优化
  • 安徽省建设协会网站抄一则新闻四年级
  • 怎么做淘客的网站关键词词库
  • 买卖域名的网站好营业推广
  • 哪些网站是ruby做的女性广告
  • 网站开发前台代码和后台代码营销推广投放平台
  • wordpress调用分类链接福州短视频seo网站
  • 茂名建站公司镇江关键字优化品牌
  • 宿迁公司做网站八宿县网站seo优化排名
  • 电脑网站页面怎么调大小和业务多一样的平台
  • dedecms网站的下载软文营销经典案例优秀软文
  • 赌博网站做代理微信群卖房卡模板式自助建站
  • 做网站生意越来越差香港头条新闻
  • 专门做悬疑推理小说的阅读网站产品营销方案策划书
  • 泰州做直销会员结算管理网站青岛关键词优化报价
  • 龙山建设集团有限公司网站湖南关键词优化快速
  • 中小企业网站制作报价运用搜索引擎营销的案例
  • 世界上有几个空间站友情链接检测659292
  • 房地产网站建设哪家有效果做什么推广最赚钱
  • 在越南做网站需要什么西安seo服务外包
  • 做文案应该关注的网站推荐网站优化关键词公司
  • 制作精美网站建设独立网页搜索关键字
  • 开办网站备案百家号关键词排名