作为计科的应届生,出来勉强找了份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一步步走真的是找自己思路的不足的好方法。以上,加油!