解法一
class Solution {
public int lengthOfLongestSubstring(String s) {
String temp = "";
int maxLen = s.length() > 0 ? 1 : 0;
int index = 0;
char c;
for(int i = 0; i < s.length(); i++)
{
c = s.charAt(i);
index = temp.indexOf(c);
if(index != -1)
{
maxLen = temp.length() > maxLen ? temp.length() : maxLen;
temp = temp.substring(index + 1);
temp += c;
}
else
{
temp += c;
}
}
return temp.length() > maxLen ? temp.length() : maxLen;
}
}
解法二
class Solution {
public int lengthOfLongestSubstring(String s) {
Map<Character, Integer> map = new HashMap<Character, Integer>();
int ans = 0;
int i = 0;
int j = 0;
int len = s.length();
while(i < len && j < len)
{
if(map.containsKey(s.charAt(j)))
{
i = Math.max(map.get(s.charAt(j)), i);
}
ans = Math.max(ans, j - i + 1);
map.put(s.charAt(j), ++j);
}
return ans;
}
}