最长子字符串 Longest Substring Without Repeating Characters
Description: Given a string, find the length of the longest substring without repeating characters.
给一个字符串, 找到该字符串最长无重复子字符串的长度.
Solution:
class Solution {
public int lengthOfLongestSubstring(String str) {
if (str == null && ("").equals(str)) {
return 0;
}
char[] chars = str.toCharArray();
int[] map = new int[256];
for (int i = 0; i < 256; i++) {
map[i] = -1;
}
int len = 0;
// 当前str[i]下, 最长无重复子字符串开始的前一个位置
int pre = -1;
int cur = 0;
for (int i = 0; i != chars.length; i++) {
pre = Math.max(pre, map[chars[i]]);
cur = i - pre;
len = Math.max(cur, len);
map[chars[i]] = i;
}
return len;
}
}
所给字符串长度为N, 字符编码范围为M, 则该方法时间复杂度为O(N), 额外空间复杂度为O(M).

浙公网安备 33010602011771号