美文网首页
最长不含有重复字符的子串

最长不含有重复字符的子串

作者: yo调调 | 来源:发表于2019-06-07 00:46 被阅读0次
问题:

输入一组字符串,字符串中含有重复字符,求最大不重复的子字符串长度。

描述:

输入的字符串为 abcabcdefghabe 最大和的连续子数组为 abcdefgh 其最大长度为8。

思路:

把第一个元素设为开始位置,循环遍历字符串,记录下所有元素所在的位置下标,一直到重复字符出现,记录长度,然后把开始位置改为上一个重复字符所在位置的后面,继续遍历,重复字符出现、记录长度、开始位置下移,最后比较长度,取长的那个,直到找出最长的子串。

代码很简单:

<?php

class Algorithm
{

    public function lengthOfNonRepeatingSubStr($str): int
    {
        $lastPosition = [];
        $start = 0;
        $maxLength = 0;
        for ($i = 0; $i < strlen($str); $i++) {
            if (isset($lastPosition[$str{$i}])) {
                if ($lastPosition[$str{$i}] > $start) {
                    $start = $lastPosition[$str{$i}] + 1;
                }
            }
            if ($i - $start + 1 > $maxLength) {
                $maxLength = $i - $start + 1;
            }
            $lastPosition[$str{$i}] = $i;
        }
        return $maxLength;
    }

}

$algorithm = new Algorithm();
echo $algorithm->lengthOfNonRepeatingSubStr('aabcdeefgefgabcdefgihrtnmeuig'); //13

相关文章

  • 阿里面试算法题四

    最长不含有重复串的字符串 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 1...

  • 面试常见算法

    最长不含重复字符的子字符串: 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例...

  • leetCode3最大无重复字符的子串

    最长无重复字符的子串 给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 实现思路 初始化hashSet...

  • 无重复字符串的最长子串

    题目大意:给定一个字符串,找出不含有重复字符的最长子串的长度 解读: 1、给定abcabcbb,没有重复子串的最长...

  • 【top】3. 无重复字符的最长子串

    给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 解释下: 子串是一段连续的字符。 子序列不...

  • 无重复字符的最长子串

    给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 给定 "abcabcbb" ,没有重复字符的最长子串...

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

    给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 给定 "abcabcbb" ,没有重复字符的最长子串...

  • 15 - Medium - 无重复字符的最长子串

    给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 给定 "abcabcbb" ,没有重复字符的最长子串...

  • 求输入字符串的最长子串长度

    给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 给定 "abcabcbb" ,没有重复字符的最长子串...

  • 【leetcode-字符串】无重复字符的最长子串

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

网友评论

      本文标题:最长不含有重复字符的子串

      本文链接:https://www.haomeiwen.com/subject/cvbdxctx.html