【发布时间】:2018-10-18 17:22:39
【问题描述】:
目标很简单——找到最长的子串而不重复字符,代码如下:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int ans = 0;
int dic[256];
memset(dic, -1, sizeof(dic));
int len = s.size();
int idx = -1;
for (int i = 0;i < len;i++) {
char c = s[i];
if (dic[c] > idx)
idx = dic[c];
ans = max(ans, i - idx);
dic[c] = i;
}
return ans;
}
};
从其简洁的表达,我认为这是一种高性能的方法,我们可以得到它的时间复杂度只是 O(n)。但是我对这种方法感到困惑,虽然我想出了一些例子来明白了,谁能给我一些提示或想法?
【问题讨论】:
-
问题不清楚。你能详细说明一下吗?你试过这个,它达到你的目标了吗?你在问什么?另外:你标记了这个 C++11,但对我来说看起来非常“C 风格”。
-
@kebs 至于c++11,我发现VS2015支持这个标准。但我想强调一下,为什么我把它当成一个标签只是因为我有一个笔误,也许我应该把它换成C++......实际上我不太了解这两者之间的区别C++ 的标准