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计算无重复字符的最长子串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解springmvc 中controller与jsp传值

    详解springmvc 中controller与jsp传值

    本篇文章主要介绍了springmvc 中controller与jsp传值,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Java结构性设计模式中的装饰器模式介绍使用

    Java结构性设计模式中的装饰器模式介绍使用

    装饰器模式又名包装(Wrapper)模式。装饰器模式以对客户端透明的方式拓展对象的功能,是继承关系的一种替代方案,本篇文章以虹猫蓝兔生动形象的为你带来详细讲解
    2022-09-09
  • springboot中使用rabbitt的详细方法

    springboot中使用rabbitt的详细方法

    这篇文章主要介绍了springboot中使用rabbitt,通过本文学习让我们了解如何在Spring Boot中使用RabbitMQ,并使用不同的交换机和队列类型以及消息确认模式,需要的朋友可以参考下
    2023-05-05
  • Java位掩码控制权限与(&)或(|)非(~)、>的介绍

    Java位掩码控制权限与(&)或(|)非(~)、>的介绍

    今天小编就为大家分享一篇关于Java位掩码控制权限与(&)或(|)非(~)、>的介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • SpringCloud用Zookeeper搭建配置中心的方法

    SpringCloud用Zookeeper搭建配置中心的方法

    本篇文章主要介绍了SpringCloud用Zookeeper搭建配置中心的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Javabean转换成json字符并首字母大写代码实例

    Javabean转换成json字符并首字母大写代码实例

    这篇文章主要介绍了javabean转成json字符并首字母大写代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • java中的transient关键字解读

    java中的transient关键字解读

    这篇文章主要介绍了java中的transient关键字解读,transient关键字的主要作用就是让某些被transient关键字修饰的成员属性变量不被序列化,实际上也正是因此,在学习过程中很少用得上序列化操作,一般都是在实际开发中,需要的朋友可以参考下
    2023-09-09
  • Java面试题冲刺第十一天--集合框架篇(2)

    Java面试题冲刺第十一天--集合框架篇(2)

    这篇文章主要为大家分享了最有价值的两道集合框架的面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Java仿淘宝首页分类列表功能的示例代码

    Java仿淘宝首页分类列表功能的示例代码

    这篇文章主要介绍了仿淘宝分类管理功能的示例代码,具有很好的参考价值,希望对大家有所帮助,也给大家做个参考
    2018-05-05
  • JSP服务器端和前端出现乱码问题解决方案

    JSP服务器端和前端出现乱码问题解决方案

    这篇文章主要介绍了JSP服务器端和前端出现乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02

最新评论