太久不动手折腾一下午,居然不如从前了。
收藏一个评论区特别精炼的代码。
int lengthOfLongestSubstring2(string s) {
int m[129] = { 0 }; //每个字母的位置+1,非常巧妙
int i, j;
int cnt = 0, pre = 0; //cnt当前长度,pre当前计数开始的位置
int max = 0;
int c;//当前字母
for (i = 0; c = s[i]; i++) {
if (pre < m[c]) {//如果当前计数开始的位置就是字母c(因为m[c]比c上次的位置大1)
if (max < cnt)
max = cnt;
cnt = i - m[c];//更新当前长度
pre = m[c];//从上次C的位置的下一个字母开始计数
}
cnt++;
m[c] = i + 1;
}
return max > cnt ? max : cnt;
}
本文介绍了一种高效算法来寻找字符串中最长的无重复字符子串。通过使用数组记录字符位置并迭代检查,该算法能在O(n)的时间复杂度内解决问题。文中提供了一个简洁的C语言实现代码。
724

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



