每日一题(Java版本):无重复字符的最大长串

题目:

无重复字符的最大长串。
在这里插入图片描述

答案:

1、解法(一),这是我自己写的,虽运行通过,但是算法效率太低,仅供参考。

class Solution {
    
    
    public int lengthOfLongestSubstring(String s) {
    
    
        int start = 0, length = 0, count = 0, flag;
        char charIndex;
        HashMap<Character, Integer> map = new HashMap<Character, Integer>();

        for(int i = 0; i < s.length(); i++){
    
    
            charIndex = s.charAt(i);
            
            // 代表新新字符串
            if(map.containsKey(charIndex) && map.get(charIndex) >= start){
    
    
                // 旧字符串长度大于已知最长长度
                if(i - start > length){
    
    
                    length = i - start;
                }
            
                // 起始编号加一
                start = map.get(charIndex) + 1; 

                 // 新字符串长度
                count = i - start;
            }

            map.put(charIndex, i);
            count++;
        }

        if(count > length){
    
    
            return count;
        }

        return length;
    }
}

2、解法(二):昨天发现我的解法效率太低,故查询了其它解法,发现效率更高,想法也非常好。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35843514/article/details/109603527