Leetcode 3 Longest Substring Without Repeating Characters

Given a string, find the length of the longest substring without repeating characters.

Example 1:

Input: "abcabcbb"
Output: 3 
Explanation: The answer is "abc", with the length of 3. 

Example 2:

Input: "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.

Example 3:

Input: "pwwkew"
Output: 3
Explanation: 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.

Solution 1:

class Solution {
    public int lengthOfLongestSubstring(String s) {
        
        
        char[] stringChar = s.toCharArray();
        if(stringChar.length < 2) return stringChar.length;
        
        Stack<String> tempStack = new Stack<String>();
        
        Queue<String> q = new LinkedList<>(); 
        
        int max = 0;
        int i = 0;
        
        for(char c: stringChar){
            if(!q.contains(Character.toString(c))){
                q.add(Character.toString(c));
                i++;
            }else{
                if(i>=max) max = i;
                while(q.size()!=0 && (!q.peek().equals(Character.toString(c)))){
                    q.remove();
                }
                if(q.size()!=0 && (q.peek().equals(Character.toString(c)))) {
                    q.remove();}
                q.add(Character.toString(c));
                i = q.size();
            }
        }
        if(i>=max) max=i;
        return max;