C++速通LeetCode中等第5题-无重复字符的最长字串

字串substr法,定义字串的头部和长度,和字串后一位对比,如果不存在重复元素则长度+1,存在重复元素则头部更新,长度重置。

cpp 复制代码
class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        string s2;//存放s的前一部分,判断该部分有没有后一个字符
        int res = 1;
        int start = 0;//子序列第一个的序号
        int len = 1;//连续的前端子序列长度
        if(!s.size()) return 0;
        if(s[0] == ' ') return 1;
        for(start = 0; ; )
        {   
            if(start+len == s.size()) return res;
            s2 = s.substr(start,len);//一开始存放第一个字符
            if(count(s2.begin(),s2.end(),s[start+len]))//判断有没有重复,重复就重新开始计数
            {
                start += 1;//重复则start变到尾部后一位
                res = max(res,len);
                len = 1;
            }
            else//不重复start不变
            {
                len++;
                res = max(res,len);
            }
        }
        return res;
    }
};
相关推荐
REDcker8 小时前
JS 与 C++ 语言绑定技术详解
开发语言·javascript·c++
June`8 小时前
C++11新特性全面解析(三):智能指针与死锁
开发语言·c++
认真敲代码的小火龙8 小时前
【JAVA项目】基于JAVA的医院管理系统
java·开发语言·课程设计
曼巴UE59 小时前
UE5 C++ 动态多播
java·开发语言
小小晓.9 小时前
Pinely Round 4 (Div. 1 + Div. 2)
c++·算法
SHOJYS9 小时前
学习离线处理 [CSP-J 2022 山东] 部署
数据结构·c++·学习·算法
steins_甲乙9 小时前
C++并发编程(3)——资源竞争下的安全栈
开发语言·c++·安全
煤球王子9 小时前
学而时习之:C++中的异常处理2
c++
ada7_9 小时前
LeetCode(python)108.将有序数组转换为二叉搜索树
数据结构·python·算法·leetcode
请一直在路上9 小时前
python文件打包成exe(虚拟环境打包,减少体积)
开发语言·python