输入一个字符串(只包含 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 }
原文地址:https://www.cnblogs.com/mengchunchen/p/10572792.html
时间: 2024-10-07 15:12:52