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

广州牌手表网站360搜索引擎地址

广州牌手表网站,360搜索引擎地址,为什么做美妆网站,中企动力做网站靠谱吗https://leetcode.cn/problems/is-subsequence/?envTypestudy-plan-v2&envIdtop-interview-150因为是子序列我们只要关心后一个字符在前一个字符后面出现过就行&#xff0c;至于在哪出现出现几次我们不关心&#xff0c;所以我们可以用HashMap<Character, ArrayList<…
https://leetcode.cn/problems/is-subsequence/?envType=study-plan-v2&envId=top-interview-150
因为是子序列我们只要关心后一个字符在前一个字符后面出现过就行,至于在哪出现出现几次我们不关心,所以我们可以用HashMap<Character, ArrayList<Integer>> map;这个数据结构来存每一个字符出现过的位置然后遍历s,找到s中每一个字符在t中出现的位置(并且要在前一个字符的后面第一个,因为list是有序的我们可以通过二分来找),如果没找到则返回false,如果找到了则更新preIndex,继续遍历s,直到遍历完s,返回true.
题目后面那个拓展应该是让我们保留状态,我能想到比较好的方法就是构造字典树了,比如构造长度为i的字符串的字典树(1<i<=n),这样只用拿长度为i的字符串到对于长度的字典树匹配就行字典树匹配的时间是log n,总的时间就是nlog n,但是构造这样一个字典树组很麻烦,暂时只能想到这了。

class Solution {public static void main(String[] args) {String s = "abc";String t = "ahbgdc";System.out.println(new Solution().isSubsequence(s, t));}public boolean isSubsequence(String s, String t) {int len_s = s.length(), len_t = t.length();HashMap<Character, ArrayList<Integer>> map = new HashMap<>();//记录字符出现的位置for(int i = 0; i < len_t; i++) {if(!map.containsKey(t.charAt(i))) {ArrayList<Integer> list = new ArrayList<>();map.put(t.charAt(i), list);}map.get(t.charAt(i)).add(i);}int preIndex = -1, currIndex = 0;//preIndex记录上一个字符出现的位置,currIndex记录当前字符出现的位置int index = 0;//当前在找的字符while(index < len_s) {if(!map.containsKey(s.charAt(index))) {//如果s中出现了t中没有的字符,则直接返回falsereturn false;}currIndex = getCurrIndex(preIndex, map.get(s.charAt(index)));//获取当前字符在t中出现的下一个位置if(currIndex == -1) return false;//没找到else {preIndex = currIndex;//更新preIndex}index++;}return true;}//找当前字符在前一个字符下标后第一次出现的下标public int getCurrIndex(int preIndex, ArrayList<Integer> list) {//通过二分找到一个出现在上一个字符后的待找字符int left = 0, right = list.size() - 1;while(left < right) {int mid = (left + right) >> 1;if(list.get(mid) > preIndex) right = mid;else left = mid + 1;}return list.get(left) > preIndex ? list.get(left) : -1;}
}

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

相关文章:

  • wordpress 国内广告贵州网站seo
  • 胶州国际网站建设效果国内搜索引擎有哪些
  • 网站的滚动图片怎么做如何自己创建一个网站
  • 如何用区块链加密wordpress旺道智能seo系统
  • 网站建设与管理模拟题1企业网站建设要多少钱
  • 企网官方网站新网
  • 站规划在网站建设中的作用广州番禺发布
  • 上海装修公司网站建设百度推广费
  • 专业建设外贸网站制作最新网站查询
  • 舟山市建设局网站百度管理员联系方式
  • 手机上的软件网站建设品牌推广方案模板
  • 筑梦做网站福鼎网站优化公司
  • 哪个app可以找培训班关键词排名优化流程
  • 一般做网站销售提成有域名有服务器怎么做网站
  • 张家港做网站广告公司哪家网络营销好
  • 百度做网站的费用文明seo
  • 武汉网站建设索q.479185700网站关键词推广工具
  • 外贸企业建站公司青岛神马排名优化
  • 隐藏wordpress特征网络优化师
  • 淮安市做网站的公司网络营销知识点
  • 毕业设计代做的网站好刚刚北京传来重大消息
  • 一个企业可以做几个网站旺道seo
  • 视频运营管理网站seo怎么做优化工作
  • 营销型网站建设公司比较专业百度关键词查询
  • 文本怎样做阅读链接网站网络推广软文
  • 苏州工业园区一站式服务中心北京优化seo排名优化
  • 织梦网站上传啥是网络推广
  • 常州做网站信息新开网站
  • 如何做淘宝网站设计培训班学费一般多少
  • 公司官网建设费用计入什么费用苏州网络推广seo服务