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.
Python:
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
if len(s) <= 1:
return len(s)
result = []
def helper(string):
tmp = ''
for character in string:
if character not in tmp:
tmp += character
else:
break
return len(tmp)
num = len(s)
for character in range(num):
result.append(helper(s[character:]))
return max(result)
test = Solution()
s = 'abcabcbb'
print test.lengthOfLongestSubstring(s)
Java:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class LongestSubstringWithoutRepeatingCharacters {
public static int lengthOfString(String s) {
String tmp = "";
for(int i = 0; i < s.length(); i++) {
String tmp2 = Character.toString(s.charAt(i));
if (tmp.contains(tmp2)) {
break;
}else {
tmp += tmp2;
}
}
return tmp.length();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "abcabcbb";
// pwwkew
List<Integer> result = new ArrayList<>();
for(int i = 0; i < s.length(); i++) {
int sublength = lengthOfString(s.substring(i));
result.add(sublength) ;
}
System.out.println(Collections.max(result));
}
}