记录力扣学习(无重复字符的最长子串)

记录个人学习!

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

class Solution {
public int lengthOfLongestSubstring(String s) {
            Set<Character>set=new HashSet<>();
            int setr=-1;
            int ans=0;
            for (int i = 0; i <s.length() ; i++) {
                if(i!=0)
                set.remove(s.charAt(i-1));
                while (setr+1<s.length()&&!set.contains(s.charAt(setr+1)))
                {
                    set.add(s.charAt(setr+1));
                    setr++;
                }

                ans=Math.max(ans, set.size());
            }
            return ans;


        }
}

这种计算重复字串长度的肯定要联想到Set,往set中插入已有元素它返回false,否则返回true。

像这题就是以字符串中的不同字符作为开头,从此遍历后续,然后到重复就断,前面的存入Set,然后与最大长度比较,然后官方给的解也差不多,他只开辟了一个Set,考虑到Set的复用,在一个重复的子串前所有的字符遍历都要在这里断掉,然后考虑以某个字符开始,把该字符的前面元素断掉。然后比较

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值