首页 > 其他分享 >无重复字符的最长子串

无重复字符的最长子串

时间:2023-02-17 11:24:53浏览次数:59  
标签:子串 字符 重复 st maxLength 最长

无重复字符的最长子串

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

示例 1:

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

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

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
  请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

提示:

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

双指针也可以称为滑动窗口。按照滑动窗口来理解较为容易一点,在符合条件的前提下不断加入字符,直到不满足条件,再不断右移左指针直到符合条件。

code

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        
        unordered_map<char,int> st;

        int maxLength = 0;
        for(int i = 0,j = 0;i < s.size();i ++)
        {
           st[s[i]] ++;
           while(j < i && st[s[i]] > 1) st[s[j]] --,j ++;
           maxLength = max(maxLength, i - j + 1);
        }

        return maxLength;
    }
};

标签:子串,字符,重复,st,maxLength,最长
From: https://www.cnblogs.com/huangxk23/p/17129461.html

相关文章

  • c语言填空:统计输入的字符中所有大写字母的个数
    #include<stdio.h>//用来统计输入的字符中所有大写字母的个数,用#结束输入main(){inta[26],i;charch;for(i=0;i<26;i++)a[i]=【1】;ch=ge......
  • 最长递增子序列
    给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,......
  • 最长有效括号
    给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。/***@param{string}s*@return{number}*/constlongestValidParenthese......
  • MySQL(二)字符集、比较规则与规范
    1字符集的相关操作MySQL8.0之前的版本,默认字符集为latin1,8.0及之后默认为utfmb3、utfmb4,如果以前的版本忘记修改默认的密码,就会出现乱码的问题。1.1修改步骤修改mysql......
  • 力扣---5. 最长回文子串
    给你一个字符串s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案......
  • React 使用input限制字符长度时,部分手机(ios)输入中文时出现英文拼音
    1.在使用input的onInput方法时,控制字符长度尽量使用inputmaxLength属性进行控制不能使用以下方式handleOnInput=()=>{letfilterText=(e.target.value||'').r......
  • C# 字符串数组去重(去除数组中重复元素)
    1、去重distinct()或者GroupBy(p=>p).Select(p=>p.Key),去重的对象都需要为数组,具体看代码stringitemfileids="1,3,3,5,4,6,8,4,7,5,1,2";string[]sArray=itemf......
  • 字符指针与字符数组的复习
    遇到的刷题题目,给定sec秒,将其转换为时分秒输出,规定了函数形式为char*timeTrans(intsec)且需要返回修改的字符串首地址#include<stdio.h>char*timeTrans(intsec,c......
  • 《判断字符串是IP还是域名》
    首先假设输入字符串为域名,然后检查输入字符串是否是一个合法的IPv4地址。如果不是,则将输入字符串解析为域名,并输出结果。如果是一个合法的IPv4地址,则直接输出结果。注......
  • java字符串之间的拼接方法
    在java开发中,有很多时候,需要把一个集合或者数组中的数据进行拼接,拼接成一个全新格式的字符串,这时候就用到了java中的一些方法,方法如下:一、Joiner-guava点击查看代码/......