千家信息网

java如何求无重复字符的最长子串

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章将为大家详细讲解有关java如何求无重复字符的最长子串,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。无重复字符的最长子串给定一个字符串,请你找出其中不含有重
千家信息网最后更新 2025年01月21日java如何求无重复字符的最长子串

这篇文章将为大家详细讲解有关java如何求无重复字符的最长子串,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

无重复字符的最长子串

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

提示:

0 <= s.length <= 5 * 104 s 由英文字母、数字、符号和空格组成

力扣链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters

示例 1:

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

示例 2:

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

示例 3:

输入: s = "" 输出: 0

/*                String s = "abcabcffhbb";                 //string   a b c a b c f f h b b                 //map      0 1 2 3 4 5 6 7 8 9 10 map记录字符最后一次出现的位置,(a,0)->(a,3)                //[ ]      1 2 3 3 3 3 4 1 2 3 1  记录s.toCharArray()数组对应字符的最大子串长度*/class Solution {    public int lengthOfLongestSubstring(String s) {        if(s.length() == 0){            return 0;        }        char[] arr = s.toCharArray();        int len = s.length();                // 记录字符最后一次出现的位置                Map map_index = new HashMap();                // 记录s.toCharArray()数组对应字符的最大子串长度                int[] distance = new int[len];                map_index.put(arr[0],0);                distance[0] = 1;        int max = 1;                int index;                for(int i=1;i

使用了数组记录字符串中每个字符对应的最大子串长度,map则是记录某个字符最后一次出现的位置。用前一个字符+1与相同字符的距离进行比较,求出不重复的子串长度。

关于"java如何求无重复字符的最长子串"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0