今天的题目为:
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例 1:
1 | 输入: "abcabcbb" |
示例 2:
1 | 输入: "bbbbb" |
示例 3:
1 | 输入: "pwwkew" |
首先来思路分析:
我们可以先第一次把所有不重复的字符串分割一下保存下来,这样就可以找到这一次的不重复的子字符串最长的
然后在一次一次往后面移动,这样就可以找出所有不重复的子字符串,最后再求出最大值。
比如:
abcd ahjiklo字符串 我们第一次从头开始寻找,找到不重复的子字符串,那就有两个,一个为abcd另外一个为ahjiklo,如果单单重上面看那么最长的不重复子字符串就是ahjiklo,但是我们需要的不是这个,那么我们就需要再循环一次,每次把第一个字符去掉然后再寻找,比如这一次把a去掉那么找出的最长子字符串就是bcdahjiklo,这个是最长的,然后再把本次的第一个字符去掉一直循环,这样到最后找出最长的子字符串,
复杂度分析:
当然,这种方法可以算是一种暴力解决的方法,没有什么技巧性,时间复杂度也是最复杂的,O(n3)的复杂度,当然如果想要优化的话可以自己去研究一下奥。
代码:
1 | package main |
这样就可以求出来了,如果想要优化的伙伴可以自己去稍加研究。