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;
    }
};
相关推荐
wuk99816 小时前
基于MATLAB/Simulink实现交流异步电动机矢量控制的仿真
开发语言·matlab
零度@16 小时前
30条Java性能优化清单
java·开发语言
期待のcode16 小时前
Java的包装类
java·开发语言
aloha_78916 小时前
python基础面经八股
开发语言·python
LYFlied16 小时前
【每日算法】LeetCode 5. 最长回文子串(动态规划)
数据结构·算法·leetcode·职场和发展·动态规划
雾岛听蓝16 小时前
C++:模拟实现string类
开发语言·c++
superman超哥17 小时前
Rust Cargo Run 与 Cargo Test 命令:开发工作流的双引擎
开发语言·后端·rust·cargo run·cargo test·开发工作流·双引擎
XFF不秃头17 小时前
力扣刷题笔记-合并区间
c++·笔记·算法·leetcode
p&f°17 小时前
Java面试题(全)自用
java·开发语言
编程之路,妙趣横生17 小时前
STL(七) unordered_set 与 unordered_map 基本用法 + 模拟实现
c++