首页 > 其他分享 >力扣 leetcode 3. 无重复字符的最长子串

力扣 leetcode 3. 无重复字符的最长子串

时间:2022-11-23 22:55:56浏览次数:46  
标签:子串 index cur 字符 重复 力扣 int leetcode

题目描述

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

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

示例

示例1:

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

示例2:

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

示例3:

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

解体思路

最简单的思路是遍历整个字符串,假设当前遍历的下标为icur_index是无重复子串的起始下标。如果s[i]==s[j],则将cur_index置为cur_index = j+1。具体代码如下:

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        // s的长度小于2时,直接返回最终结果
        if(s.size() < 2){
            return s.size();
        }
        // 最小的无重复子串的长度为1
        int max_len = 1;
        // 记录当前无重复字符子串的起始位置
        int cur_index = 0;
        for(int i = 1; i < s.size(); i++){
            for(int j = cur_index; j < i; j++){
                // 判断是否出现重复字符
                if(s[i] == s[j]){
                    // 新的无重复字符子串下标从j+1开始
                    cur_index = j + 1;
                    break;
                }
                // 判断当前子串长度是否超出最大值
                max_len = max_len > (j - cur_index + 2) ? max_len : (j - cur_index + 2);
            }
        }
        return max_len;
    }
};

标签:子串,index,cur,字符,重复,力扣,int,leetcode
From: https://www.cnblogs.com/greatestchen/p/16920449.html

相关文章

  • LeetCode刷题笔记—13.罗马数字转整数
    在此不再做题目描述。(该题链接:13.罗马数字转整数-力扣(LeetCode))在观察罗马数字时,我们可以发现计算罗马数字的技巧:可以设定一个初始值ans=0,然后对罗马数字从左到......
  • 力扣242 有效的字母异位词
    题目:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若 s和t 中每个字符出现的次数都相同,则称 s和t 互为字母异位词。示例:输入:......
  • 算法4: LeetCode_K个节点的组内逆序调整
    最近一直都是链表的算法练习,今天刷的是LeetCode原题,还是关于链表的节点逆转,难度等级:Hard.首先看题目:给定一个单聊表的头节点head和一个正整数k,要求实现k个节点的小组内......
  • Leetcode 1360. 日期之间隔几天
    题目:请你编写一个程序来计算两个日期之间隔了多少天。日期以字符串形式给出,格式为YYYY-MM-DD,如示例所示。难度:简单题示例1:输入:date1="2019-06-29",date2="2019-......
  • P8835 [传智杯 #3 决赛] 子串 ----- KMP算法、字符串匹配、字母大小写转换
    题目背景disangan233喜欢字符串,于是disangan333想让你找一些disangan233喜欢的串。题目描述在传智的开发课堂上,希望您开发一款文档处理软件。给定 TT 组询问......
  • LeetCode[435] 无重叠区间
    https://leetcode.cn/problems/non-overlapping-intervals/description/线性dpTLEclassSolution{public:intf[200010];inta[200010];interaseOver......
  • [LeetCode] 2133. Check if Every Row and Column Contains All Numbers
    An nxn matrixis valid ifeveryrowandeverycolumncontains all theintegersfrom 1 to n (inclusive).Givenan nxn integermatrix matrix,re......
  • 有没有人一起从零开始刷力扣
    简介是不是有许多小伙伴在刷力扣的时候感觉无从下手?从头按顺序开始刷的童鞋们可能会比较有感触,为什么才第四题就感觉很难了?没关系,本文将对力扣的1-700题中不需要会员的......
  • 力扣34(java)-在排序数组中查找元素的第一个和最后一个位置(中等)
    题目:给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回 [-1,-1]......
  • leetcode 88. 合并两个有序数组 js实现
    给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合......