题目:
class Solution { //本题采用双指针滑动窗口的方法
public:
int lengthOfLongestSubstring(string s) {
map<char, int> m; //map里面存放的是**每个字符对应的下一个索引**
int result, l=0, r=0;
while(r<s.size()){
if(m.find(s[r])!=m.end()){ //若该字符已经出现,左指针直接跳到窗口中重复字符的下一位。相当于重新开始计算长度
l = max(l, m[s[r]]); //这里max判断不可缺少,因为l指针有可能会比m[s[r]]大,这时候需要l指针不动
}
m[s[r]] = r+1; //存放当前字符的下一个索引
result = max(result, r-l+1);
r++;
}
return result;
}
};
分类:
算法编程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具