LeetCode 算法题解与代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution {

// 128 ansi字符记录某个字符的出现的次数
int[] arr = new int[128];

// n
public int lengthOfLongestSubstring(String s) {
int ans = 0;
char[] charArray = s.toCharArray();
int len = charArray.length;
// sliding window
int left = 0;

// if check, left++, util check false and update ans
for (int right = 0; right < len; right++) {
// 在这个时刻以前是窗口中是没有重复字符的
arr[charArray[right]]++;
char cur = charArray[right];
// 在right右移了以后, 出现了重复的字符
// 这里出现的重复只会是当前这个字符
while (arr[cur] > 1) {
arr[charArray[left++]]--;
}
// update ans
ans = Math.max(ans, right - left + 1);
}

return ans;
}
}

Comments
Recent Posts
Untitled
Categories
Tags
Website Info
Article Count :
2
Total Word Count :
1.6k
Unique Visitors :
Page Views :
Last Update :