【每天学习一点点】

作为计科的应届生,出来勉强找了份Java初级开发的工作糊口,才发现自己大学四年好像什么都没有系统的学会。既然什么都不会那就重新开始好好学好了,开这个博客主要是为了记录学习历程,不定期更新,想到啥就写啥。

我的学习计划大概是每天LeetCode做2-3题,题目难度皆为easy和medium,毕竟太难的我也不会TAT。Spring系列知识学习,在找工作之前,我是真的不会spring。然而公司项目都是用的spring cloud了,不过作为代码的搬运工,需要处理的业务逻辑真的不复杂,但要走得更远真的的要好好补习相关知识了。

今天在LeetCode上碰到的题是:无重复字符最长子串。

读完题总觉得在哪里见过,后来想起来,数据结构讲过的滑动窗口,但是忘得差不多了,把官方的解题思路看了一遍,然后自己写下的代码。

以下是我的代码:

class Solution {
    public int lengthOfLongestSubstring(String s) {
        int n=s.length();
        int ans=0;
        Set<Character> set=new HashSet<>();
        if(n==0||"".equals(s)){
            return ans;
        }
        for(int i=0;i<n;i++){
        	set.add(s.charAt(i));
        	for(int j=i+1;j<n;j++){
        		if(!set.contains(s.charAt(j))){
        			set.add(s.charAt(j));
                	if(set.size()>=ans){
                    ans=set.size();
                	}
        		}else{
            	set.clear();
                break;
        		}
        	}
            if(set.size()>ans){
        		ans=set.size();
        	}
        }
        return ans;
    }
}

虽然运行通过但是速度有点慢,官方解法的方法三有空再好好看看。

注意点,刚开始在""和" "处报错了,空字符串是子串,长度为0;空格符号则是要算长度的,最后在LeetCode上运行代码成功,但是提交后解答错误真的是不要太正常,编译超时,运行超时也很正常,这时候就把代码放到本地打断点吧,debug一步步走真的是找自己思路的不足的好方法。以上,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值