public class Solution { public int lengthOfLongestSubstring(String s) { int left=0,Max=0; Map<Character,Integer> map = new HashMap<Character,Integer>(); char[] chs = s.toCharArray(); for(int i=0;i<chs.length;i++){ if(map.containsKey(chs[i]) && map.get(chs[i])>=left){ left = map.get(chs[i])+1; } map.put(chs[i],i); Max = Max>(i-left+1)?Max:(i-left+1); } return Max; } }
#include<limits.h> #include<stdio.h> int lengthOfLongestSubstring(char* s) { int i,j,left=0,Max=0,hash[256]; for(j=0;j<256;j++)hash[j]=INT_MAX; for(i=0;s[i];i++){ if(hash[s[i]]!=INT_MAX && hash[s[i]]>=left) left=hash[s[i]]+1; hash[s[i]]=i; Max = Max>(i-left+1)?Max:(i-left+1); } return Max; }
class Solution { public: int lengthOfLongestSubstring(string s) { int Max=0,left=0; map<int,int> map; for(int i=0;i<s.size();i++){ std::map<int,int>::iterator iter=map.find(s[i]); if(iter!=map.end() && iter->second >=left){ left=iter->second+1; } map[s[i]]=i; Max = Max>(i-left+1)?Max:(i-left+1); } return Max; } };
class Solution: # @param {string} s # @return {integer} def lengthOfLongestSubstring(self, s): left=0 Max=0 hash={} for i in range(len(s)): ch = s[i] if hash.has_key(ch) and hash[ch]>=left: left=hash[ch]+1 hash[ch]=i Max= Max if Max>i-left+1 else i-left+1 return Max
LeetCode 3 Longest Substring Without Repeating Characters
原文地址:http://blog.csdn.net/runningtortoises/article/details/45507319