您的位置:首页 > 编程语言 > C语言/C++

【C++】【LeetCode】3. Longest Substring Without Repeating Characters

2017-04-01 11:42 435 查看
link: Longest
Substring Without Repeating Characters

题目:

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given 
"abcabcbb"
, the answer is 
"abc"
,
which the length is 3.

Given 
"bbbbb"
, the answer is 
"b"
,
with the length of 1.

Given 
"pwwkew"
, the answer is 
"wke"
,
with the length of 3. Note that the answer must be a substring, 
"pwke"
 is
a subsequence and not a substring.

注意点:

注意,如果使用两层从0到size的for循环,会导致时间复杂度过大,考虑将外层循环变量i跳值,从重复的字符的下一个开始取。

源码:

class Solution {
public:
int lengthOfLongestSubstring(string s) {
int max = 0;
int size = (int)s.size();
string newS = "";

for (int i=0; i<size-max; i++) { //如果i到最后一位的距离已经小于max,则没有必要继续
for (int j=i; j<size; j++) {
newS = s.substr(i, j-i+1);
int count = (int)newS.find(s[j+1]);
if (count >= 0) {
if (newS.size() > max) {
max = (int)newS.size();
}
i = i + count;
break;
}
newS = s.substr(i, j-i+2);
}
if (newS.size() > max) {
max = (int)newS.size();
}
}
return max;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: