题目:
* 给定一个字符串 str,返回 str 的最长无重复字符子串的长度。
* 举例,str="abcd",
* 返回 4。
* str="aabcb",
* 最长无重复字符子串为"abc",
* 给定一个字符串 str,返回 str 的最长无重复字符子串的长度。
* 举例,str="abcd",
* 返回 4。
* str="aabcb",
* 最长无重复字符子串为"abc",
* 返回 3。
算法思路:这是一个标准的最长无重复子串的问题,只需要利用哈希表记录当前元素出现的历史位置,通过比较即可实现算法。(QQ:3036643587 欢迎交流)
/**
* 给定一个字符串 str,返回 str 的最长无重复字符子串的长度。
* 举例,str="abcd",
* 返回 4。
* str="aabcb",
* 最长无重复字符子串为"abc",
* 返回 3。
* @author Administrator
*
*/
public class LongestNoReportSubString {
public static int getLongestSub(String s){
if(s==null||s.equals("")){
return 0;
}
int[] map = new int[256];
for(int i=0;i<256;i++){
map[i] = -1;
}
int pre = -1;
int len = 0;
char[] arr = s.toCharArray();
for(int i=0;i<arr.length;i++){
pre = Math.max(pre, map[arr[i]]);
len = Math.max(len, i-pre);
map[arr[i]] = i;
}
return len;
}
public static void main(String[] args) {
String s = "aabcbb";
System.out.println("最长无重复子串的长度是"+getLongestSub(s));
}
}