一、C++实现
int lengthOfLongestSubstring(string s) {
if (s.length() <= 1)
return s.length();
int res = 1, start = 0, end = 0;
for (; start < s.length(); start++) {
for (end = start; end < s.length(); end++) {
for (int i = end - 1; i > start; i--) {
if (s[end] == s[i]) {
start = i;
if (end - start > res)
res = end - start ;
}
}
if (s[start] == s[end] && start != end) {
if (end - start > res)
res = end - start;
break;
}
else if (s[start] != s[end])
{
if (end - start + 1 > res)
res = end - start + 1;
}
}
}
return res;
}
二、Java
public int lengthOfLongestSubstring(String s) {
char[] ss = s.toCharArray();
int n = ss.length;
int ans = 0;
Map<Character,Integer> map = new HashMap<>();
for(int i = 0,j = 0;j < n;j++){
if(map.containsKey(ss[j])){
i = Math.max(map.get(ss[j]),i);
}
ans = Math.max(ans,j-i+1);
map.put(ss[j],j+1);
}
return ans;
}