[LeetCode][Python]Longest Substring Without Repeating Characters

1492 ワード

# -*- coding: utf8 -*-
'''
__author__ = '[email protected]'
https://oj.leetcode.com/problems/longest-substring-without-repeating-characters/

Given a string, find the length of the longest substring without repeating characters.
For example, the longest substring without repeating letters for "abcabcbb" is "abc",
which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1.

===Comments by Dabay===
max_so_far , , 。
, max_so_far , max_so_far。
'''
class Solution:
# @return an integer
def lengthOfLongestSubstring(self, s):
if len(s) <= 1:
return len(s)
max_so_far = 0
longest = ""
for char in s:
if char in longest:
longest = longest[(longest.index(char))+1:] + char
else:
longest = longest + char
max_so_far = max(max_so_far, len(longest))
return max_so_far


def main():
s = Solution()
string = "abcabcbb"
print s.lengthOfLongestSubstring(string)


if __name__ == "__main__":
import time
start = time.clock()
main()
print "%s sec" % (time.clock() - start)