class Solution {
public intlengthOfLongestSubstring(String s){if(s.trim().isEmpty()&&(!s.isEmpty()))return1;if(s.isEmpty())return0;
Queue<Character> q = new LinkedList<Character>();int maxLength=1,length=1;
q.add(s.charAt(0));for(int i=1;i<s.length();i++){if(q.contains(s.charAt(i))){while(!q.element().equals(s.charAt(i))){
q.remove();
length--;}
q.remove();
length--;}
q.add(s.charAt(i));
length++;if(length>maxLength){
maxLength=length;}}return maxLength;}}
官方题解
遍历给定字符串 s 的所有可能的子字符串并调用函数 allUnique。 如果事实证明返回值为 true,那么我们将会更新无重复字符子串的最大长度的答案。
public class Solution {
public intlengthOfLongestSubstring(String s){int n = s.length();int ans =0;for(int i =0; i < n; i++)for(int j = i +1; j <= n; j++)if(allUnique(s, i, j)) ans = Math.max(ans, j - i);return ans;}
public boolean allUnique(String s,int start,int end){
Set<Character> set = new HashSet<>();for(int i = start; i < end; i++){
Character ch = s.charAt(i);if(set.contains(ch))return false;
set.add(ch);}return true;}}
题干求解根据题干的描述,要确定最长无重复字符字串的长度,我们可以使用一个队列;依次向队列中加入字符,若不存在在入队,反之,出队(直至去除重复字符)class Solution { public int lengthOfLongestSubstring(String s) { if(s.trim().isEmpty()&&(!s.isEmpty()))return...