leecode-找出其中不含有重复字符的 最长子串 的长度

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。这道题主要用到思路是:滑动窗口

class Solution {

    /**
     * @param String $s
     * @return Integer
     */
   function lengthOfLongestSubstring($s) {
    $len = strlen($s);
    $sarr = str_split($s,1);
    $varr = array_flip($sarr);
    $arr = [];
    $left =0;

    $mmmm = 0;
    for($left; $left<$len; $left++){
        //存在就修改长度
        if (in_array($sarr[$left], $arr)){
            //计算当前最大值
            $max_len = count($arr);
            //已存在数组的位置
            $ak = 0 ;
            foreach ($arr as $kkk => $vvv){
                if($vvv == $sarr[$left]){
                    $ak=$kkk;
                    break;
                }
            }
            //删除已存元素位置以及之前的元素
            for($j=0;$j<=$ak;$j++){
                if(isset($arr[$j])) unset($arr[$j]);
            }
            //尾部-首部
//            echo ‘letf:‘,$left,‘ak:‘.$ak;
            $mm = $left-$ak;
//            echo ‘letf:‘,$left,‘ak:‘.$ak,‘mm:‘.$mm.‘-‘.$max_len.‘--‘;
//            echo $mmmm,‘-‘.$mm.‘-||‘;
            if($mmmm<$mm) $mmmm=$mm;
//var_dump($max_len,$mm,$mmmm);
//echo ‘-----------‘;
            $arr[$left] = $sarr[$left];

//            var_dump($arr);
        }else{
//echo $sarr[$left];
            $arr[$left] = $sarr[$left];
            $mmmm = $mmmm<count($arr)?count($arr):$mmmm;
//            var_dump($arr,$mmmm);
//            echo  $arr[$left]  , ‘-‘,$mmmm,"||||||||||||||||||||";
        }
//        echo $mmmm,‘||‘;
    }
    return $mmmm;
}
}

  

原文地址:https://www.cnblogs.com/dennylau/p/11725434.html

时间: 2024-08-30 01:14:02

leecode-找出其中不含有重复字符的 最长子串 的长度的相关文章

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

开个新坑,leetcode上面做题目.下面是题目描述: <!-- 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3. 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1. 示例 3: 输入: "pwwkew" 输出

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

class Solution {public: int lengthOfLongestSubstring(string s) { int num=0; int N=s.size(); string check; std::cout<<"N="<<N; int count=0; int max_num=0; int j=0; for (int i=1;i<N-1;i++) { if(s[0]==s[1]) { j=1; count=0; } else { c

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

输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3. 这道题主要用到思路是:滑动窗口 什么是滑动窗口? 其实就是一个队列,比如例题中的 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca,这时候不满足要求.所以,我们要移动这个队列! 如何移动? 我们只要把队列的左边的元素移出就行了,直到满足题目要求! 一直维持这样的队列,找出队列出现最长的长度时候,求出解! cl

LeetCode: 3_Longest Substring Without Repeating Characters | 求没有重复字符的最长子串的长度 | Medium

题目: Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest s

leecode第三题(无重复字符的最长子串)

class Solution { public: int lengthOfLongestSubstring(string s) { int len=s.size(); if(len==0||len==1)//边界 return len; vector<int> is_here; for(int i=0;i<256;i++)//ASCII字符一共256个,建立一个辅助空间存储每个字符最后出现的位置 is_here.push_back(-1); int max_length=0; int j

LeetCode 无重复字符的最长子串(探索字节跳动)

题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3. 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1. 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "w

领扣-无重复字符的最长子串-Python实现

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3. 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1. 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke&qu

LeetCode 第3题 无重复字符的最长子串

/*3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3. 示例 2: 输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1. 示例 3: 输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 &qu

#leetcode刷题之路3-无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3. 字符数组和字符串的区别,C语言字符数组和字符串区别详解 开始的想法是在对字符数组设置两个指针,初始化一个在位置0一个在位置1,ans初始化为1(非空),然后1向后找,0不动,取0到1之间的字符串,判断是否重复(这里单独写一个函数,输入字符串,输出是否重复以及重复字符的后一个的位置),不