
最长不含重复字符的子字符串?
//优化方法
public static String optFindDistinctStr(String str){
int[] assit = new int[128];
int startIndex,substrStartIndex,maxLen,curLen;
startIndex = 0;
substrStartIndex = 0;
maxLen = 0;
curLen = 0;
for(int i = 0;i < str.length();i++){
startIndex = Math.max(assit[str.charAt(i)],startIndex);
curLen = i - startIndex + 1;//跳过那个重复出现的数 从它的下一个开始
if(curLen > maxLen){
maxLen = curLen;
substrStartIndex = startIndex;
}
//数组初始化都为0,辅助数组的坐标为原位置的index + 1;
assit[str.charAt(i)] = i + 1;
}
return str.substring(substrStartIndex,substrStartIndex + maxLen);
}
}
近期评论