leetcode 2
https://leetcode.com/articles/longest-substring-without-repeating-characters/
贪心法:子问题可以决定父问题
动态规划:自问题影响父问题
ord()将字符转换成ascii码
class Solution:
# @return an integer
def lengthOfLongestSubstring(self, s):
longest, start, visited = 0, 0, [False for _ in xrange(256)]
#visited是一个bool表,标记当前扫描substring已经存在的字母
for i, char in enumerate(s):
if visited[ord(char)]: #当前字符已经存在,ord()将字符转换成ascii码
while char != s[start]:#找到当前扫描字符之前重复的位置!重新开始扫
visited[ord(s[start])] = False
start += 1
start += 1
else:#未出现过,标记之
visited[ord(char)] = True
#择更大的长度保存到longest
longest = max(longest, i - start + 1)
return longest
if __name__ == "__main__":
print Solution().lengthOfLongestSubstring("abcabcbb")