题目描述:
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 无重复字符的最长子串是 "abc",其
长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 无重复字符的最长子串是 "b"
,其长度为 1。
示例 3:
输入: "pwwkew" 输出: 3 解释: 无重复字符的最长子串是"wke"
,其长度为 3。 请注意,答案必须是一个子串,"pwke"
是一个子序列 而不是子串。
方法:暴力解决
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int max = 0;
if(s.size() == 0)
return max;
for(int i = 0; i < s.size(); i++){
int j,k;
int len = 1;
if(len > max)
max=len;
if(i == s.size()-1)
break;
for(j = i + 1; j < s.size(); j++){
int k;
for(k=i;k<j;k++){
if(s[k]==s[j]){
len=j-i;
break;
}
}
if(k==j)
len=j-i+1;
if(len>max){
max=len;
}
if(k!=j&&s[k]==s[j])
break;
}
if(len>max){
max=len;
}
}
return max;
}
};
执行用时:168 ms
思路:
设置一个for循环遍历字符串,第二个和第三个for循环遍历不重复子串长度。要注意字符串为空以及只有一个元素的字符串的情况。
其他:
这种方法太暴力,复杂度高,若有更好的方法,欢迎指导交流!