力扣原题《无重复字符的最长子串》纯手搓已验证

张开发
2026/4/6 16:04:34 15 分钟阅读

分享文章

力扣原题《无重复字符的最长子串》纯手搓已验证
给定一个字符串 s 请你找出其中不含有重复字符的 最长 子串 的长度。示例 1:输入: s “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”所以其长度为 3。注意 “bca” 和 “cab” 也是正确答案。示例 2:输入: s “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”所以其长度为 1。示例 3:输入: s “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”所以其长度为 3。请注意你的答案必须是 子串 的长度“pwke” 是一个子序列不是子串。提示0 s.length 5 * 104s 由英文字母、数字、符号和空格组成我的答案#includesstreamclassLengthOfLongestSubstring{public:intlengthOfLongestSubstring(string s){//使用纯逻辑来找字串未使用数据结构优化intMax0;if(s.size()1){return1;}for(char*left(char*)s.data();*left!\0;left){std::stringstream substring;substring*left;for(char*rightleft1;*right!\0;right){stringcurrt(1,*right);if(substring.str().find(currt)string::npos)//此处会耗时{substring*right;if(*(right1)\0){if(substring.str().size()Max){Maxsubstring.str().size();}}}else{if(substring.str().size()Max){Maxsubstring.str().size();}break;}}}returnMax;}};intmain(){vectorstringss;ss.push_back( );ss.push_back(au);ss.push_back(abcabcbb);ss.push_back(bbbbb);ss.push_back(pwwkew);LengthOfLongestSubstring lengthOfLongestSubstring;for(vectorstring::iterator iterss.begin();iter!ss.end();iter){std::cout无重复最长子串长度为:lengthOfLongestSubstring.lengthOfLongestSubstring(*iter)std::endl;}}

更多文章