LeetCode133:给定一个字符串,找出最长的不具有重复字符的子串的长度。例如,“abcabcbb”不具有重复字符的最长子串是“abc”,长度为3。对于“bbbbb”,最长的不具有重复字符的子串是

    科技2022-07-16  113

    题目描述

    给定一个字符串,找出最长的不具有重复字符的子串的长度。例如,“abcabcbb”不具有重复字符的最长子串是“abc”,长度为3。对于“bbbbb”,最长的不具有重复字符的子串是“b”,长度为1。 示例1 输入 ::"" 输出 : 0

    思路解析:本题目可以说是一个很典型的利用滑动窗口的字符串类型的题目。设定两个指针,限定了一个窗口,窗口内的字符不能够重复,每次右指针移动时都会检查窗口内是否是重复元素,如果有的话那么调整左指针的位置,定义一个res值记录最大的窗口值就是问题的解。

    class Solution { public: /** * * @param s string字符串 * @return int整型 */ int lengthOfLongestSubstring(string s) { if(s.empty())//空串检查 return 0; map<char,int> book;//定义map int i,Max=0,pre=-1;//i为左指针,pre为右指针的位置 for(i=0;i<s.length();i++) book[s[i]]=-1; for(i=0;i<s.length();i++) { pre=max(pre,book[s[i]]); Max=max(Max,i-pre); book[s[i]]=i; } return Max; } };
    Processed: 0.010, SQL: 8