Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc"
, with the length of 3.
Example 2:
Input: "bbbbb"
Output: 1
Explanation: The answer is "b"
, with the length of 1.
Example 3:
Input: "pwwkew" Output: 3 Explanation: 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.
代码:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
string s2;
int len=s.length();
int ans=0;
int i,j;
int k,m;
int flag=0;
for(i=0;i<len;i++){
if(ans>=len-i)
break;
for(j=len-i;j>0;j--){
if(ans>=j)
break;
flag=0;
s2=s.substr(i,j);
for(k=0;k<s2.length();k++){
if(flag==1)
break;
for(m=k+1;m<s2.length();m++){
if(s2[k]==s2[m]){
flag=1;
break;
}
}
}
if(s2.length()>ans && flag==0)
ans=s2.length();
}
}
return ans;
}
};
咸鱼,居然超时了。。。。。。
改了一下
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int i,j,k;
int flag;
int num=0;
for(i=0;i<s.length();i++){
flag=0;
for(j=i+1;j<=s.length();j++){
for(k=i;k<j;k++){
if(s[j]==s[k]){
flag=1;
break;
}
}
num=(j-i)>num?(j-i):num;
if(flag){
break;
}
}
}
return num;
}
};
时间复杂度O(n^3)过了。看网上有O(n)的解决算法,算了,懒得看了。。。。。。
这次学了个substr(i,j)函数,取字符串从i(0起)起长度为j的字串。