首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

3. 无重复字符的最长子串

题目

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

分析

1、初始化两个指针,start 和 end,它们定义了正在考虑的子串的边界。2、使用一个哈希集合(HashSet)来记录当前子串中的字符,以便快速检查是否有重复的字符。

3、遍历字符串,将字符逐个添加到哈希集合中,并移动 end 指针。

4、如果遇到重复字符,则从哈希集合中移除 start 指针指向的字符,并向前移动 start 指针。

5、记录在每次 end 移动后无重复字符子串的最大长度。

代码

import java.util.HashSet;import java.util.Set;

public class Solution { public static int lengthOfLongestSubstring(String s) { Set<Character> charSet = new HashSet<>(); int start = 0; int maxLen = 0; for (int end = 0; end < s.length(); end++) { while (charSet.contains(s.charAt(end))) { charSet.remove(s.charAt(start)); start++; } charSet.add(s.charAt(end)); maxLen = Math.max(maxLen, end - start + 1); } return maxLen; }

public static void main(String[] args) { String input = "abcabcbb"; // 示例输入,可以根据需要更改 System.out.println("Length of the longest substring without repeating characters: " + lengthOfLongestSubstring(input)); }}

代码解析

1、定义了一个 lengthOfLongestSubstring 方法来计算不含重复字符的最长子串的长度。

2、使用 HashSet 来存储已经出现过的字符。

3、使用两个指针 start 和 end 来定义当前考虑的子串。

4、在 end 指针遍历字符串的过程中,如果发现重复字符,则从 charSet 中移除 start 指针对应的字符,并且移动 start 指针。

5、计算并更新最长子串的长度 maxLen。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Orc83yUY9tGgwErreJ_4Tf9g0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券