杭州网站建设文章,动漫设计制作专业学什么,wordpress 自定义菜单,idc 网站源码给定一个字符串 s #xff0c;请你找出其中不含有重复字符的 最长子串 的长度。
示例 1: 输入: s abcabcbb 输出: 3 解释: 因为无重复字符的最长子串是 abc#xff0c;所以其长度为 3。 示例 2: 输入: s bbbbb 输出: 1 解释: 因为无…给定一个字符串 s 请你找出其中不含有重复字符的 最长子串 的长度。
示例 1: 输入: s abcabcbb 输出: 3 解释: 因为无重复字符的最长子串是 abc所以其长度为 3。 示例 2: 输入: s bbbbb 输出: 1 解释: 因为无重复字符的最长子串是 b所以其长度为 1。 示例 3: 输入: s pwwkew 输出: 3 解释: 因为无重复字符的最长子串是 wke所以其长度为 3。 请注意你的答案必须是 子串 的长度pwke 是一个子序列不是子串。 提示
0 s.length 5 * 104s 由英文字母、数字、符号和空格组成 自己写的时间超限
class Solution {
public:int lengthOfLongestSubstring(string s) {const char* ch s.c_str();int i 0;int n 0, max 0;for(int j0;jstrlen(ch);j){i j;n 0;setchar ch_set;while (ch[i] ! \0){if (ch_set.find(ch[i]) ! ch_set.end()){if (n max){max n;}n 1;}else{n;}ch_set.insert(ch[i]);i;}if (maxn)max n;}return max;}
};
示例模板
class Solution {
public:int lengthOfLongestSubstring(string s) {vectorint m(128, 0);//ASCII范围0-127int ans 0;int i 0;//滑动窗口算法for (int j 0; j s.size(); j) { //控制右指针i max(i, m[s[j]]); //控制左指针m[s[j]] j 1; //重复了后左指针的下一个位置ans max(ans, j - i 1); //j-i1子串长度}return ans;}
};
原理 详细参照