本文主要是介绍[LeetCode] 3.Longest Substring Without Repeating Characters,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目内容
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
Given a string, find the length of the longest substring without repeating characters.
https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
Example 1:Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.
Example 2:Input: "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.
Example 3:Input: "pwwkew"
Output: 3
Explanation: 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.
题目思路
流程就是从第一位开始读取字符串,如果没有出现过重复的,就在字典中记录这个字符串以及出现的位置。如果有重复的话,那么就更新字符串,从重复位置的下一位作为新的开始start,进行重新计算,直到遍历完整个字符串。
程序代码
class Solution(object):def lengthOfLongestSubstring(self, s):""":type s: str:rtype: int"""if not s:return 0max_str,this_str=0,0#用来标记最大长度和当前的长度site={}#用于存储字符的位置start=0#开始的位置for i in range(len(s)):if s[i] not in site or site[s[i]]<start:this_str+=1site[s[i]]=ielse:max_str=max(max_str,this_str)start=site[s[i]]+1this_str=i-site[s[i]]site[s[i]]=ireturn max(max_str,this_str)
这篇关于[LeetCode] 3.Longest Substring Without Repeating Characters的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!