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

dw做高逼格的网站以图搜图百度识图

dw做高逼格的网站,以图搜图百度识图,合肥做网站一般多少钱,腾脉网建站力扣——找到字符串中所有字母异位词(点击跳转) 如果 P “abc”,那么下图中的都是它的异位词。 在 S 中找到 P 的异位词后,要返回起始位置的下标。 做这道题之前,我们要知道如何判断两个字符串是否是异位词&#…

力扣——找到字符串中所有字母异位词(点击跳转)
在这里插入图片描述
如果 P = “abc”,那么下图中的都是它的异位词。
在这里插入图片描述
在 S 中找到 P 的异位词后,要返回起始位置的下标。
在这里插入图片描述

做这道题之前,我们要知道如何判断两个字符串是否是异位词,其实我们可以统计每个字符出现的次数,如果两个字符串中每个字符出现的次数相等,那么他们就是异位词。利用哈希表即可
在这里插入图片描述
我们定义一个变量 m 表示 p 字符串的长度,我们将 p 字符串中字母出现的次数存放在 hash1 中,在 s 这个字符串中,找到长度为 m 的子串 ,将次数存放到 hash2 中,然后比较两个哈希表是否相等就可以。
在这里插入图片描述
其实我们没有必要每次都将 m 个字母的次数都存放在哈希表中 ,如下图所示,红色为第一次枚举放入到哈希表中,粉色为第二次枚举放入到哈希表中,被荧光笔涂到的区域其实已经在哈希表中了,没必要再次存放,只需要将 c 从哈希表中删除,在将 e 添加到哈希表中即可
在这里插入图片描述
所以,我们可以使用滑动窗口的方法来解决此问题。
在这里插入图片描述

  1. left = 0,right = 0
  2. 进窗口:hash2[in]++
  3. 判断:right - left + 1 > m
    出窗口:hash2[out]–
    更新结果 :check(hash1,hash2)(比较两个哈希表是否相等)

在更新结果当中,我们需要遍历两个哈希表来进行check,比较麻烦,所以我们对更新结果的判断条件进行优化。

我们定义一个变量 count 来统计窗口有效字符的个数

如下图所示,当 c 进入窗口之后,与 hash1 中 c 字符出现的次数比较,有两种清情况。

  1. 小于等于 hash1 中的……,说明 c 为有效字符,让 count + 1
    在这里插入图片描述
    之后 right 继续右移,然后放入到 hash2 中
  2. 大于 hash1 中的……,count 不更新
    在这里插入图片描述
    接下来,right 右移
    在这里插入图片描述
    right 继续右移
    在这里插入图片描述

此时,窗口大于 m ,让 left 右移,再将第一个 c 从 hash2 中删除之前,我们要先判断此时这个字符出现的次数是否大于 hash1 中的次数,这种情况,显然是大于,那么删掉的就是无效字符,count 不需要变化,此时 c 的个数变成了 1。
在这里插入图片描述
然后我们再判断 count是否等于m,此时count == m,那么窗口中的字符就是 p 的异位词,输出起始位置下标
在这里插入图片描述
接下来的遍历就省略了

  1. 进窗口:hash2[in] <= hash1[in] ——> count++
  2. 出窗口:hash2[out] <= hash1[out] ——> count–
  3. 更新结果:count==m

代码如下:

class Solution {public List<Integer> findAnagrams(String s, String p) {List<Integer> ret = new ArrayList<Integer>();char[] s1 = s.toCharArray();char[] p1 = p.toCharArray();int[] hash1 = new int[26];for(char ch : p1){hash1[ch - 'a']++;}int[] hash2 = new int[26];int m = p.length();for(int left = 0,right = 0,count = 0;right < s1.length;right++){char in = s1[right];if(++hash2[in - 'a'] <= hash1[in - 'a']){count++;}if(right - left + 1 > m){char out = s1[left++];if(hash2[out - 'a']-- <= hash1[out - 'a']){count--;}}if(count == m){ret.add(left);}}return ret;}
}

今日任务完成,嘻嘻
在这里插入图片描述

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

相关文章:

  • 公司官网如何被百度收录拼多多关键词优化步骤
  • 东莞vi设计公司排名网站关键词优化公司哪家好
  • 如何设计微商城网站建设石家庄网站建设seo
  • 临沂做商城网站设计千网推软文推广平台
  • 产品营销方案案例范文aso关键词优化工具
  • win7做网站服务器武汉网站竞价推广
  • 政府网站监测和集约化建设平台站外推广渠道有哪些
  • 简单的网站后台管理系统百度招商客服电话
  • 公司取名大全最新版的郑州本地seo顾问
  • vs2010可以做动态网站吗营销推广是什么意思
  • 中国建设银行货币基金网站平台宣传推广方案
  • 河北公司注册网上核名seo是什么公司
  • 网站下面 备案搜索引擎优化seo应用
  • 网站做装修营销型网站的推广方法
  • 以下属于b2c网站的是网络营销的实现方式有哪些
  • 静态html转化wordpress主题上海网站排名seo公司
  • 外国网站手机dns博客seo怎么做
  • 深深圳市建设局网站关键词在线试听免费
  • 如何拥有自己的微信小程序seo怎么做
  • 蓬莱有做网站的吗公众号如何推广引流
  • 做网站什么公司好无屏蔽搜索引擎
  • 企业网站设计模板佛山网站建设公司哪家好
  • wordpress 父分类名称seo搜索引擎优化课后答案
  • 微网站页面杭州seo网站推广
  • 素材网站 国外av手机在线精品
  • 徐州网站开发服务怎样看网页的友情链接
  • 做a视频网站有哪些网络平台推广方案
  • 淘宝客做网站怎样推广长沙岳麓区
  • 网站制作实训网站制作公司
  • 淘宝客推广怎么做网站备案成都全网营销推广