JAVA算法日记 leetcode

JAVA算法第一篇 · 无重复字符的最小字串

leetcode 3. 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

分析思路:对于这道题,我们可以使用一个队列,当队列中没有重复的字符时,字符进队,当队列中有重复的字符时,重复字符及之前的字符全部出队,字符进队,然后判断队列长度,当队列长度大于之前标记的字符时,更新储存最长字符串的String对象
代码如下:

 1 public int lengthOfLongestSubstring(String s) {
 2         int max = 0;
 3         int num = 0;
 4         Queue<Character> queue = new LinkedList<>();
 5         for (int i = 0; i < s.length(); i++){
 6             if (!queue.contains(s.charAt(i))){
 7                 queue.add(s.charAt(i));
 8                 num++;
 9             }
10             else{
11                 while (queue.contains(s.charAt(i))){
12                     queue.remove();
13                     num--;
14                 }
15                 queue.add(s.charAt(i));
16                 num++;
17             }
18             if (num > max){
19                 max = num;
20             }
21         }
22         return max;
23     }

猜你喜欢

转载自www.cnblogs.com/andaydayup/p/12186298.html