当前位置: 首页 > news >正文

一道笔试题 - 无重复字符的最长子串

老生常谈的一道题,常见并

文章目录

    • 描述
    • 预期结果
    • Java代码

描述

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

预期结果

在这里插入图片描述

Java代码


import java.util.HashSet;
import java.util.Set;public class Demo2 {public static void main(String[] args) {int abc1231acv = Solution.LengthOfLongestSubstring("abc1231acv");System.out.println(abc1231acv);}
}class Solution {public static int LengthOfLongestSubstring(String s) {// 哈希集合,记录每个字符是否出现过Set<Character> occ = new HashSet<Character>();int n = s.length();// 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动int rk = -1, ans = 0;for (int i = 0; i < n; ++i) {if (i != 0) {// 左指针向右移动一格,移除一个字符occ.remove(s.charAt(i - 1));}while (rk + 1 < n && !occ.contains(s.charAt(rk + 1))) {// 不断地移动右指针occ.add(s.charAt(rk + 1));++rk;}// 第 i 到 rk 个字符是一个极长的无重复字符子串ans = Math.max(ans, rk - i + 1);}return ans;}
}

在这里插入图片描述

http://www.lryc.cn/news/415682.html

相关文章:

  • C#反射的NullReferenceException
  • 100道C/C++面试题
  • Python(模块)
  • 【八股文】Java基础篇
  • python rsa如何安装
  • P10289 [GESP样题 八级] 小杨的旅游
  • 网络编程 ----------- 4、组播与广播
  • 最短路径算法:Bellman-Ford算法
  • 爬虫:xpath模块及昵图网实例
  • 高级java每日一道面试题-2024年8月03日-web篇-forward和redirect有什么区别?
  • 如何让你的网站拥有更好的体验
  • opencascade AIS_TypeFilter AIS_XRTrackedDevice源码学习
  • 使用Spring AOP监控指定方法执行时间
  • 最新CSS3纵向菜单的实现
  • GooLeNet模型搭建
  • 使用ThreadLocal来存取单线程内的数据
  • elasticsearch教程
  • Arrays、Lambda表达式、Collection集合
  • 2024年前端趋势:全栈或许是不容错过的选择!
  • MySQL 实战 45 讲(01-05)
  • 仓颉编程语言入门 -- Array数组详解
  • C#初级——简单单例模式使用
  • 2024.07.29 校招 实习 内推 面经
  • 速盾:爬虫攻击和cc攻击的区别是什么?
  • Tomcat与Nginx的区别详解
  • 【大模型从入门到精通5】openAI API高级内容审核-1
  • JVM系列 | 对象的消亡3——垃圾收集器的对比与实现细节
  • C# Unity 面向对象补全计划 七大原则 之 开闭原则(OCP) 难度:☆ 总结:已经写好的就别动它了,多用继承
  • 微信防封指南请收好
  • 选择排序算法改进思路和算法实现