在有说服力的演讲,讯息的传递不是由口到耳,而是由心到心。

题目描述:

无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

解题代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public:
// "abcabcbb"
int lengthOfLongestSubstring(string s) {
int ans = 0;
int i = 0;
int tag;
for(int j = 0; j < s.length(); j++){
for(tag = i; tag < j; tag++){
if(s[tag] == s[j]){
i = tag + 1;
break;
}
}
ans = ans > (j - i + 1) ? ans : (j - i + 1);
}
return ans;
}
};

image-20231104140551457

解读与收获:

本来想是先用暴力法做一做,看看评分如何,没想到还不错,所以直接暴力法秒了。原理即j指针每移动一次就回头看一下有没有重复的,有的话将i移到重复元素的下一位,然后重新找。每次循环后更新ans的大小。

注意:

“pwwkew”他的最长无重复子串长为“wke”3位,而不是”pwke“,这是一个子序列,而不是子串。