标签:
本问题是求最长不重复子串。
给出一种方法:
例如:aplsdfgsjiuk,设置一个最长子串的起始位和结束位,a为起始位,b为结束位,当遍历aplsdfg时,下一位s重复,所以可以从d为起始位置在遍历。
public class Solution { public int lengthOfLongestSubstring(String s) { boolean []arr = new boolean[256]; for(int i = 0; i < 256; i++) { arr[i] = false; } int a = 0;//记录开始位置 int b = 0;//记录子串的结束位置 int maxlength = 0; while(b < s.length()) { if(!arr[s.charAt(b)]) { arr[s.charAt(b)] = true;// 访问过了 b++; } else { while(s.charAt(a) != s.charAt(b)) { arr[s.charAt(a)] = false; a++; } a++; b++; } maxlength = (maxlength > (b-a))? maxlength:(b-a); } return maxlength; } }
时间复杂度为O(n)。
leetcode 3. Longest Substring Without Repeating Characters
标签:
原文地址:http://www.cnblogs.com/zyqBlog/p/5911949.html