LeetCode程序员面试题之无重复字符的最长子串

 更新时间:2023年02月05日 09:32:40   作者:97的风  
Java计算无重复字符的最长子串是一种常见的字符串处理算法,它的目的是找出一个字符串中无重复字符的最长子串。该算法可以很好地解决一些字符串处理问题,比如寻找字符串中重复字符的位置,以及计算字符串中无重复字符的最长子串的长度。

1.简述:

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

示例 1:

输入: s = "abcabcbb"

输出: 3

解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: s = "bbbbb"

输出: 1

解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: s = "pwwkew"

输出: 3

解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。

    请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

2.代码实现:

class Solution {
public 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;
}
}

到此这篇关于LeetCode程序员面试题之无重复字符的最长子串的文章就介绍到这了,更多相关Java计算无重复字符的最长子串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring请求参数校验功能实例演示

    Spring请求参数校验功能实例演示

    这篇文章主要介绍了Spring请求参数校验功能实例演示,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • Java中的类初始化解析

    Java中的类初始化解析

    这篇文章主要介绍了Java中的类初始化解析,类的初始化是一个Java类生命周期中的其中一个阶段,初始化是类加载的最后一个阶段,也正是在初始化阶段,才会真正开始执行类中所写的Java代码,需要的朋友可以参考下
    2023-08-08
  • 浅谈SpringMVC的执行流程

    浅谈SpringMVC的执行流程

    下面小编就为大家带来一篇浅谈SpringMVC的执行流程。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • JavaWeb核心技术中Session与Cookie浅析

    JavaWeb核心技术中Session与Cookie浅析

    session的工作原理和cookie非常类似,在cookie中存放一个sessionID,真实的数据存放在服务器端,客户端每次发送请求的时候带上sessionID,服务端根据sessionID进行数据的响应
    2023-02-02
  • java+selenium实现自动化打开页面的方法

    java+selenium实现自动化打开页面的方法

    今天小编就为大家分享一篇java+selenium实现自动化打开页面的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • java设计模式之模板方法模式详解

    java设计模式之模板方法模式详解

    这篇文章主要为大家详细介绍了java设计模式之模板方法模式的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • JDK9的新特性之String压缩和字符编码的实现方法

    JDK9的新特性之String压缩和字符编码的实现方法

    这篇文章主要介绍了JDK9的新特性之String压缩和字符编码的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • 实例详解Java调用第三方接口方法

    实例详解Java调用第三方接口方法

    很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等),下面这篇文章主要给大家介绍了关于Java调用第三方接口方法的相关资料,需要的朋友可以参考下
    2022-06-06
  • Java实现文件上传和下载的方法详解

    Java实现文件上传和下载的方法详解

    文件上传,也称为upload,是指将本地图片、视频、音频等文件上传到服务器上。文件下载,也称为download,是指将文件从服务器传输到本地计算机的过程。本文将用Java实现文件上传和下载,需要的可以参考一下
    2022-09-09
  • Java自带定时任务ScheduledThreadPoolExecutor实现定时器和延时加载功能

    Java自带定时任务ScheduledThreadPoolExecutor实现定时器和延时加载功能

    今天小编就为大家分享一篇关于Java自带定时任务ScheduledThreadPoolExecutor实现定时器和延时加载功能,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12

最新评论