给定一个字符串,找出不含有重复字符的最长子串的长度。
示例 1:
输入: "abcabcbb" 输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。
示例 2:
输入: "bbbbb" 输出: 1 解释: 无重复字符的最长子串是 "b",其长度为 1。
示例 3:
输入: "pwwkew" 输出: 3 解释: 无重复字符的最长子串是 "wke",其长度为 3。 请注意,答案必须是一个子串,"pwke"是一个子序列 而不是子串。
智商所限,采取的是暴力破解法。思路很简单,就是设定3个指针,第一个指向第一个字符,第二个指针右移,与第一个指针指向元素比较,如果不等,则继续右移,在右移之前还要把第二个指针指向的元素与第一个指针和第二个指针直接的元素比较。代码如下:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int len=s.size();
if(s.empty()) return 0;
if(len==1) return 1;
int i=0;
int max=0;
for(;i<len;i++){
for(int j=i+1;j<len;j++){
if(s[i]==s[j]){
max = (j - i+1) > max?(j-i):max;
break;
}
for(int k=i+1;k<j;k++){
if(s[j]==s[k]){
max = (j - i)>max? (j - i ):max;
i=k+1;
break;
}
}
if(j==len-1)
return (j - i+1) > max ? (j - i+1) : max;
}
}
return max;
}
};