最长不含重复字符的子字符串

Posted mengchunchen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长不含重复字符的子字符串相关的知识,希望对你有一定的参考价值。

输入一个字符串(只包含 a~z 的字符),求其最长不含重复字符的子字符串的长度。例如对于 arabcacfr,最长不含重复字符的子字符串为 acfr,长度为 4。

 

 1     public static int longestSubStringWithoutDuplication(String str) {
 2         int curLen = 0 ;
 3         int maxLen = 0 ;
 4         int[] preIndex = new int[26] ;
 5         for(int i = 0 ; i < 26 ; i++){
 6             preIndex[i] = -1;
 7         }
 8         for(int i = 0 ; i < str.length() ; i++){
 9             int c = str.charAt(i) - ‘a‘ ;
10             int pre = preIndex[c] ;
11             if (pre == -1 || i - pre > curLen){
12                 curLen++ ;
13             }else{
14                 curLen = i - pre ;
15             }
16             preIndex[c] = i ;
17             maxLen = Math.max(maxLen,curLen) ;
18         }
19         return maxLen ;
20     }

 

以上是关于最长不含重复字符的子字符串的主要内容,如果未能解决你的问题,请参考以下文章

最长不含重复字符的子字符串

每日一题最长无重复子数组最长不含重复字符的子字符串

每日一题最长无重复子数组最长不含重复字符的子字符串

剑指 Offer 48. 最长不含重复字符的子字符串

剑指offer:最长不含重复字符的子字符串

剑指 Offer 48. 最长不含重复字符的子字符串