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.
class Solution {
public int lengthOfLongestSubstring(String s) {
int n=s.length(); //获取字符串长度
int ans=0; //最大值设为MAX 并且不断变化
for(int i=0;i<n;i++) //两层for循环遍历
for(int j=i+1;j<=n;j++)
{
if(all(s,i,j)) ans=Math.max(ans, j-i);//遍历字符串的每一个子串,不断更新最大值
}
return ans;
}
public boolean all(String s,int start,int end)//判断是否相同使用Set集合
{
Set<Character> set=new HashSet<>();
for(int i=start;i<end;i++)//for循环遍历字符串
{
Character c=s.charAt(i);//使用charAt遍历字符串中的每一个位置
if(set.contains(c))return false;//假如存在,返回false +0
set.add(c);若不存在,则为true +1
}
return true;
}
}