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

免费个人域名网站网站建设 设计 优化 维护

免费个人域名网站,网站建设 设计 优化 维护,河南智能网站建设哪家好,自己怎样建设淘宝返现网站题目 添加链接描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2:输入: s "bbbbb" 输出…

题目

添加链接描述

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。提示:0 <= s.length <= 5 * 104
s 由英文字母、数字、符号和空格组成

滑动窗口+Set

/*** 滑动窗口+Set*/
private static int lengthOfLongestSubstring(String s) {if (s == null) {return 0;}int length = s.length();// 将当前窗口 [left, right) 中字符存储在 HashSet 中Set<Character> characterSet = new HashSet<>(length);int left = 0, right = 0, ans = 0;while(left < length && right < length) {char c = s.charAt(right);if (!characterSet.contains(c)) {// 滑动窗口[left, right)字符没有重复,字符c添加进setcharacterSet.add(c);// 滑动窗口left不动,right右移一位right++;// 更新无重复子串长度ans:滑动窗口[left, right)的长度=right-leftans = Math.max(ans, right-left);} else {// 存在字符重复,说明滑动窗口 [left, right) 中存在与 c 相等的字符// set集合中删除字符串left处的元素,这里无法直接定位到重复字符的下标,需要从left开始删除到重复位置characterSet.remove(s.charAt(left));// 滑动窗口right不动,left右移一位,循环执行到重复元素被删除left++;}}return ans;
}

优化的滑动窗口+HashMap

如果 s[right] 在 [left,right) 范围内有与​ s[k] 重复的字符,不需要逐渐增加 left 。 可以直接跳过 [left,k] 范围内的所有元素,并将 left 变为 k+1

/**
* 滑动窗口+HashMap
*/
private static int lengthOfLongestSubstring2(String s) {if (s == null) {return 0;}int length = s.length();// 将当前窗口 [left, right) 中字符存储在 HashMap 中// key:字符,value:字符下标HashMap<Character, Integer> map = new HashMap<>(length);int ans = 0;for (int left = 0, right = 0; right < length; right++) {// 滑动窗口右指针位置char c = s.charAt(right);// 判断字符c是否出现过Integer index = map.get(c);// 字符c重复,索引index,当前左指针left// 左指针直接跳转到index+1位置,s[index] == s[right]// 但是不能超过当前left,取max(index+1, left)// 0 1 2 3 4 5 6 7 8// a b c d c e b g h//         l   r// 此时 left 索引为 4,right 遍历到 b,b重复,对应索引 1, 此时不能回溯,left不变if (Objects.nonNull(index)) {left = Math.max(index + 1, left);}// 计算当前子串长度ans = Math.max(ans, right-left+1);// 当前字符加入map集合,如果存在就用当前下标right覆盖map.put(c, right);}return ans;
}
http://www.yayakq.cn/news/630564/

相关文章:

  • 安徽徐州网站建设公司深圳软件公司名录
  • 网站建设方案范文8篇做网站 (公司)
  • 专业seo网站优化推广排名教程网站seo重庆
  • 网站备案主体是什么使用python做网站
  • 网站的好处网络营销制度课完整版
  • 企业网站开发哪家专业酒店网站html模板
  • 扫二维码做自己网站河南网站制作工作室
  • 武邑网站建设杭州集团公司网站建设
  • 仿起点小说网站开发模块式网站制作
  • 营销型网站建设空间必须是手机搭建wordpress 不root
  • 安徽省建设干校学校网站电子商务网站的建设心得
  • 南宁seo网站建设内容营销怎么做
  • 怎么才能建设免费网站成品人和精品人的区别在哪里
  • 秦皇岛抚宁区建设局网站施工企业研发资金投入情况说明
  • 网站建设文案怎么写定制网站开发
  • 江门市网站建设 熊掌号趣味阁小程序入口
  • 如何自己做个简单网站网站建设服务器是什么意思
  • 中山市做网站公司建网站和建小程序多少钱
  • 温州 网站建设网页视频下载链接
  • 做酒店的网站网站建设的实验总结
  • 网站架构建设网络稿件投稿平台
  • 建立企业网站收费标准直播网站建设需要什么
  • 邯郸企业网站制作建设网站建设项目策划书模板范文
  • 郑州企业建设网站有什么好处自己建设网站网站赚钱
  • 商丘市建立网站公司装修大全
  • 有哪些文本封面做的好的网站wordpress年会员
  • 网站做一些流量互换清洁设备网站模版
  • 免费网站管理软件网站的推广费用票可以做抵扣吗
  • 上海企业网站设计制作网站建设算加工承揽合同吗
  • 做网站 需要 域名 空间门户网站的类型