Longest Substring Without Repeating Characters
来源:互联网 发布:我友网络 编辑:程序博客网 时间:2024/06/06 15:52
给定一个字符串,找到其中的一个最长的字串,使得这个子串不包含重复的字符。
基本思路是维护一个窗口,每次关注窗口中的字符串,在每次判断中,左窗口和右窗口选择其一向前移动。同样是维护一个HashSet, 正常情况下移动右窗口,如果没有出现重复则继续移动右窗口,如果发现重复字符,则说明当前窗口中的串已经不满足要求,继续移动有窗口不可能得到更好的结果,此时移动左窗口,直到不再有重复字符为止,中间跳过的这些串中不会有更好的结果,因为他们不是重复就是更短。因为左窗口和右窗口都只向前,所以两个窗口都对每个元素访问不超过一遍,因此时间复杂度为O(2*n)=O(n),是线性算法。空间复杂度为HashSet的size,也是O(n). 代码如下:
public static int lengthOfLongestSubstring(String s) { if(s==null || s.length()==0) return 0; ArrayList<Character> set=new ArrayList<Character>(); int max=1; int runner=0; int walker=0; while(runner<s.length()){ if(set.contains(s.charAt(runner))){//如果集合中包含该元素 if(max<runner-walker){ max=runner-walker; } while(s.charAt(walker)!=s.charAt(runner)){ set.remove(s.charAt(walker)); walker++; } walker++;//以上的while循环和这个++就是移动左边的窗口,使得窗口内的元素不重复 } else {//如果不包含set.add(s.charAt(runner));} runner++; } max=Math.max(max, runner-walker);//很重要 return max; }
阅读全文
1 0
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- mysql 主从复制环境搭建
- springboot **Controller Autowired required a single bean, but 2 were found
- SVG文本
- Java 执行数据库存储过程,并带返回值
- linux中man前面的代号代表的意义
- Longest Substring Without Repeating Characters
- android的handler机制
- POJ3252Round Numbers(数位DP)
- iOS-80-解决主页tableview顶部多出一块
- css标签大全
- mac 配置jdk环境变量 零碎知识
- Netty之堆外内存
- 牛客 题库 3
- 约瑟夫环递归写法