2018年9月9日
#3. Longest Substring Without Repeating Characters
问题描述:
Given a string, find the length of the longest substring without repeating characters.
样例:
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
Given "bbbbb"
, the answer is "b"
, with the length of 1.
Given "pwwkew"
, the answer is "wke"
, with the length of 3. Note that the answer must be a substring, "pwke"
is a subsequence and not a substring.
问题分析:
本题难度为Medium!已给出的函数定义为:
class Solution:def lengthOfLongestSubstring(self, s):""":type s: str:rtype: int"""
其中s为字符串,返回值应为一个整数。
本题直接遍历字符串,寻找最长子字符串,并返回其长度;算法(伪代码)如下:
判断字符串s是否为空字符串,若是,则返回0
初始化最长子字符串长度longest为1
遍历字符串s直到倒数第二个字符,循环的字符下标为i初始化临时子字符串substr为当前字符s[i]从字符串s的i+1遍历到字符串s尾,循环的字符下标为j判断字符s[j]是否在substr中已存在,若是则break退出循环,否则将s[j]添加到substr判断substr的长度是否比longest的值大,若是,则更新longest的值为substr的字符串长度
返回longest
代码实现如下:
class Solution:def lengthOfLongestSubstring(self, s):""":type s: str:rtype: int"""if s=="":return 0longest=1for i in range(len(s)-1):substr=s[i]for j in range(i+1, len(s)):if s[j] in substr:breakelse:substr+=s[j]if len(substr)>longest:longest=len(substr)return longest