Given a string, find the length of the 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.
class Solution {
public:
int lengthOfLongestSubstring(string s) {
vector<int> dict(256,-1);
int start=-1,maxlen=0;
for(int i=0;i<s.length();i++){
if(dict[s[i]]>start)
start=dict[s[i]];
dict[s[i]]=i;
maxlen=max(maxlen,i-start);
}
return maxlen;
}
};
字符强制转换为int之后,都可以得到其对应的ASCII值(应该是这样,有错欢迎指正),所以有vector<int> dict(256,-1);
以aabbcdeff为例
| i | char | start | max(maxlen,i-start) |
| 0 |
a | -1 | (0,1) |
| 1 | a | 0 | (1,1) |
| 2 | b | 0 | (1,2) |
| 3 | b | 2 | (2,1) |
| 4 | c | 2 | (2,2) |
| 5 | d | 2 | (2,3) |
| 6 | e | 2 | (3,4) |
| 7 | f | 2 | (4,5) |
| 8 | f | 7 | (5,1) |

本文深入探讨了寻找字符串中最长无重复字符子串的算法实现,通过具体示例和代码片段,详细解释了如何利用哈希表跟踪字符位置,从而高效地找到满足条件的最长子串长度。
693

被折叠的 条评论
为什么被折叠?



