This is my code to find the length of the longest substring without repeating characters. Does this code run in O(n) time? Or does it run in O(n^2) time? I am not sure if the String methods run in O(n) time or O(1) time.
A test case includes: "pwwkewo" returning 4 because "kewo" is the the longest substring inside the string that has unique characters.
public int lengthOfLongestSubstring(String s) {
    int maxLength = 0;
    String sub = "";
    for(int i=0; i<s.length(); i++) {
         //add that char to the sub string
         sub = sub + s.charAt(i);
        //if we find a char in our string
        if(sub.indexOf(s.charAt(i)) != -1) {
           //drop any replicated indexes before it
            sub = sub.substring(sub.indexOf(s.charAt(i)) + 1);
        }
        if(sub.length() > maxLength) {
            maxLength = sub.length();
        }
    }
    return maxLength;
}
 
     
    