/*算法思想:依次判断每个字符串开始的子串,依次统计其长度,选取最长的长度返回*/
class Solution {
public:
int lengthOfLongestSubstring(string s) {
if (s.empty())
return 0;
if (s.size() == 1)
return 1;
string result;
int len = 0;
for (int i = 0; i < s.size(); i++)
{
if (s.size() - i <= len)
break;//如果剩下的长度不大于当前最长子串长度,则结束循环
result.push_back(s[i]);
int j = i;
//寻找不含重复字符的子串
while (j+1<s.size()&&result.find(s[j + 1])==-1)//string.find()在未找到时会返回string::npos。C++定义static const size_t npos = -1;
{
result.push_back(s[j + 1]);
j++;
}
//如果新得到的子串长度大于原来的,则改变len值;
if (result.size()>len)
{
len = result.size();
}
result.clear();//每次更新新的子串的时候清空;
}
return len;
}
};
3. Longest Substring Without Repeating Characters
最新推荐文章于 2025-09-11 22:31:07 发布
