没有简单的题目,或者说,再简单的题目,只要追求极致,都会要花心思。好好加油吧<->
题目:无重复字符的最长子串
1 | 给定一个字符串,找出不含有重复字符的最长子串的长度。 |
1 | 示例1: |
解题思路:
方法1:
首先,因为键盘可输入字符为128个,所以先int一个128的数组并且初始化为0,用此数组来记录是否重复,然后在循环中判断,如果为0,那么就累加长度,并且记录最大长度。然后在不为0的时候,再初始化数组为0。很明显,这个初始化很耗时,所以又想了下面的方法。
方法2:
双游标,i,j两者之差j-i+1就是子串的长度,然后数组记录的不再是字符是否重复了,而是记录最后一个字母在s串中的位置。细节在于,i在字母重复的时候,会变成字母所在的位置,判断的时候的细节在于,重复的字母的位置如果在i的左边,则表示不会在i到j的子串中重复。
1 | class Solution { |