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;
    }
};
相关推荐
煤球王子19 小时前
学而时习之:C++中的字符串
c++
ACP广源盛1392462567319 小时前
(ACP广源盛)GSV2231---DisplayPort 1.4 MST 到 HDMI 2.0/DP/Type-C 转换器(带嵌入式 MCU)
c语言·开发语言·单片机·嵌入式硬件·音视频·mst
quant_198620 小时前
【教程】使用加密货币行情接口 - 查询比特币实时价格
开发语言·后端·python·websocket·网络协议
熊猫_豆豆20 小时前
Python 写一个标准版和程序员版计算器
开发语言·python·计算器
go_bai20 小时前
Linux--进程池
linux·c++·经验分享·笔记·学习方法
Mr.Jessy20 小时前
Web APIs 学习第四天:DOM事件进阶
开发语言·前端·javascript·学习·ecmascript
QT 小鲜肉20 小时前
【QT/C++】Qt网络编程进阶:UDP通信和HTTP请求的基本原理和实际应用(超详细)
c语言·网络·c++·笔记·qt·http·udp
studyForMokey20 小时前
【Kotlin内联函数】
android·开发语言·kotlin
小虚竹20 小时前
Rust日志系统完全指南:从log门面库到env_logger实战
开发语言·后端·rust
星释20 小时前
Rust 练习册 8:链表实现与所有权管理
开发语言·链表·rust