Leetcode Longest Substring Without Repeating Characters Python 의 실패 실현 과 학습

Python 버 전 은 자신 이 이렇게 길 게 썼 습 니 다. 예 를 들 어 모두 통 과 했 지만 leetcode 가 실 행 될 때 통 하지 않 았 습 니 다. 주로 처음에 알고리즘 을 생각 할 때 중요 한 것 을 빠 뜨 렸 기 때 문 입 니 다. 처음에 생각 한 것 은 문자열 을 옮 겨 다 닐 때 중복 되 는 문 자 를 만나면 문자열 을 캡 처 한 다음 에 얻 은 하위 문자열 의 길이 가 가장 큰 것 을 계산 하 는 것 입 니 다.문자열 이 비어 있 으 면 0 을 되 돌려 줍 니 다. 중 복 된 문자 가 없 으 면 문자열 의 길 이 를 되 돌려 줍 니 다.
자신 이 실패 한 버 전:
class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        temp = []
        dict = {}
        point = 0
        count1 = 0
        if len(s) == 0:
            return 0
        for char in s:
            point = point + 1
            if char in temp:
                dict[point] = temp
                temp = []
                temp.append(char)
            else:
                temp.append(char)
                count1 = count1 + 1
                if len(s) == count1:
                    return len(s)
        dict[point + 1] = temp
	a = []
        for key in dict:
            print dict[key]
            a.append(len(dict[key]))
        return max(a)

토론 판 에 괜 찮 은 자바 와 파 이 썬.
Java
  public int lengthOfLongestSubstring(String s) {
        if (s.length()==0) return 0;
        HashMap map = new HashMap();
        int max=0;
        for (int i=0, j=0; i

hashmap 를 이용 하여 이전 같은 문자 의 위 치 를 찾 습 니 다. 그러면 이 두 글자 사이 의 거 리 는 현재 문자 로 끝 나 는 가장 긴 substring 입 니 다. 현재 max 의 크기 를 비교 하여 업데이트 가 필요 한 지 확인 하 십시오. 문자 의 위 치 를 업데이트 하 는 것 도 기억 해 야 합 니 다. 중복 되 기 때 문 입 니 다.
Python
class Solution:
    # @return an integer
    def lengthOfLongestSubstring(self, s):
        start = maxLength = 0
        usedChar = {}
        
        for i in range(len(s)):
            if s[i] in usedChar and start <= usedChar[s[i]]:
                start = usedChar[s[i]] + 1
            else:
                maxLength = max(maxLength, i - start + 1)

            usedChar[s[i]] = i

        return maxLength

좋은 웹페이지 즐겨찾기