#include<string>
#include<iostream>
//using std::string;
using namespace std;
class Solution {
public:
int lengthOfLongestSubstring(string s) {
// 暴力搜索改良版,O(N^2)
int index = 0; //记录字符串临时起始位置
int len_s = s.size();
int len = 0;
if (len_s == 0 || len_s == 1) //排除掉0个或1个字符情况
return len_s;
for (int i=1; i<len_s; i++) //依次从第二个元素向后选择
{
for (int j=i-1; j>=index; --j) //j始终小于当前大循环里的i
{
if (s[i] == s[j])
{
// 如果上一次在第j个位置相同,则下一次 i+1 到j不可能是最大位置,下一次直接从j+1(index)位置开始
index = j+1;
if (len < i-j) //i-j为当前不重复子字符串的长度
len = i-j; //排除‘bbbbb’这种情况以免直接就break了
break;
}
//整体的思路是暴利循环,所有的情况都算一遍找距离最大的
if (len < i-j+1) //i-j+1为当前不重复子字符串的长度
len = i-j+1;
}
}
return len;
}
};
int main(){
Solution so;
string s = "abcabcbb";
int len = so.lengthOfLongestSubstring(s);
cout << "len is:" << len << endl;
}
leetcode 3 Longest Substring Without Repeating Characters
最新推荐文章于 2021-12-03 15:58:56 发布