找到字符串的最长无重复字符子串

【题目】给定一个字符串str,返回str的最长无重复子串的长度。

【要求】如果str的长度为N,请实现时间复杂度为O(N)的方法。

public class MaxUnique {
	public static int getMaxUnique(String str) {
		if (str == null || str.equals("")) {
			return 0;
		}
		char[] chas = str.toCharArray();
		int[] map = new int[256];
		for (int i = 0; i < map.length; i++) {
			map[i] = -1;
		}
		int len = 0;
		int cur = 0;
		int pre = -1;
		for (int i = 0; i < chas.length; i++) {
			pre = Math.max(pre, map[chas[i]]);
			cur = i - pre;
			len = Math.max(cur, len);
			map[chas[i]] = i;
		}
		return len;
	}
}

上一篇:找到被指的新类型字符


下一篇:Set中的add和addAll方法