3. 无重复字符的最长子串
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释:无重复字符的最长子串是 "abc",其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 无重复字符的最长子串是 "b",其长度为 1。
示例3:
输入: "pwwkew"
输出: 3
解释: 无重复字符的最长子串是 "wke",其长度为 3。
请注意,答案必须是一个子串,"pwke" 是一个子序列 而不是子串。
思路: 创建一个新的字符串p,然后不断比较s中的s[i]与p中的每一个元素,如果有s[i]==p[j]则清除p中的第(0,j),然后继续将第i各元素加入p中
class Solution {
public:
int lengthOfLongestSubstring(string s) {
string p="";
p+=s[0];
if(s.size()==0) return 0;
if(s.size()==1) return 1;
int size=p.size();
int *a=new int[s.size()];
int k=0;
for(int i=1;i<s.size();i++){
for(int j=0;j<p.size();j++){
if(s[i] == p[j]){
if(size<p.size())
{
size=p.size();
}
p.erase(0,j+1);//删除p中0~j的元素,注意erase()的用法
break;
}
}
p+=s[i];
}
return size>p.size()?size:p.size();
}
};