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


    题目:

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

    示例 1:

    输入: "abcabcbb"

    输出: 3

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

    示例 2:

    输入: "bbbbb"

    输出: 1

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

    示例 3:

    输入: "pwwkew"

    输出: 3

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

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

         这道题通过滑动窗口来解决,通过一个vector/数组 定义256大小,下标表示所有字符,用一个left表示窗口的左边界,i向右滑动,strmax表示最大窗口大小,也是不重复字符的最长字串。通过vector中的字符下标所对应的值和left比较判断窗口中是否出现重复字符,如果出现,left重新更新。但是注意比如   abca(left)cdefa  比如当i走到第三个a时 left的值就会是第二个a的下标数,这样窗口大小就是i-left,刚好不包括left所指的a字符。

    //其他头文件自写
    #include <vector>
    #include<algorithm>
    int MaxStr(string str)
    {
        vector<int> help(256,-1);
        int strmax = 0; int left = -1;
        int len = str.length();
        for(int i=0;i<len;i++)
        {
            left = max(left, help[str[i]]);
            help[str.at(i)] = i;
            strmax = max(strmax, i - left);    
        }
        return strmax;
    }
  • 相关阅读:
    6 15种对抗攻击的防御方法
    5 12种生成对抗样本的方法
    4 基于优化的攻击——CW
    3 基于梯度的攻击——MIM
    Hibernate 5 Maven 仓库的 Artifacts
    Hibernate 5 发行组件下载
    Hibernate 5 的模块/包(modules/artifacts)
    Hibernate 5 开始使用指南前言
    Git 如何针对项目修改本地提交提交人的信息
    Spring Batch 4.2 新特性
  • 原文地址:https://www.cnblogs.com/ycw1024/p/11296294.html
Copyright © 2020-2023  润新知