> 文档中心 > 力扣Day03

力扣Day03

3.无重复字符的最长子
题目:
给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度
示例 1:

输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3

示例 2:

输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1

示例 3:

输入: s = “pwwkew”

输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

提示:

0 <= s.length <= 5 * 104
s 由英文字母、数字、符号和空格组成

class Solution {    public int lengthOfLongestSubstring(String s) {      int []a = new int[200];//定义一个200长的整形数组      for(int i=0;i<200;i++){   a[i]=-1;//便利数组a,将所有元素置为-1      }      int j=s.length();//j为字符串长度      int n=0;//不重复元素的长度      int start=0;//开始出现不重复元素的开始位置      for (int i=0;i<j;i++){   int m=s.charAt(i);   start = Math.max(start,a[m]+1);   n=Math.max(n,i-start+1);   a[m]=i;      }  return n;    }}