LeetCode第3题无重复字符的最长子串

2023年 8月 22日 36.5k 0

继续打卡算法题,今天学习的是第LeetCode的第3题无重复字符的最长子串,这道题目是道中等题。算法题的一些解题思路和技巧真的非常巧妙,每天看一看算法题和解题思路,我相信对编码能力有一些帮助。

image.png

分析一波题目

这道题目就是一个比较有意思的题目,从一个字符串找不相同的最长的子字符。

题目里的关键信息:
1、注意是找最长的,因此我们肯定需要把最长的记录下来。题目只要求返回长度,因此使用一个整形变量就可以了。
2、不含重复字符,这个信息很关键,我们可以以每个字符开头开始遍历,通过hashset记录遍历过的元素,不断的累计,如果遇到重复的,说明已经找到了以这个元素开头的最大子串,记录下来,需要重写找另外一个元素开头的子串。

编码实现

class Solution {
    //整体思路,只要遇到一个重复的字符,就抛弃一个元素,重新计算最长子串
    public int lengthOfLongestSubstring(String s) {
            //集合存储不重复的子元素
            Set set = new HashSet();
            int maxlen = 0;
            int start = 0;
            for(int i=0; i maxlen) {
                    maxlen = set.size();
                }
                
            }
            return maxlen;
    }
}

总结

这个题目一开始看着只能想到使用暴力解法,深入思考一下使用HashMap可以减少循环,遇到有没有重复元素的情况,可以考虑看下使用HashMap结构能不能降低复杂度。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论