int theLongestSubstring(const string& str) {
vector<bool> visited(128, false); // 英文字符, hashTable
int ret = 0,
head = 0,
tail = 0;
for (; head < str.size();) {
if (visited[str[head]]) {
ret = max(ret, head - tail);
while (visited[str[head]])
visited[str[tail++]] = false;
}
else
visited[str[head++]] = true;
}
ret = max(ret, head - tail); // 这一步容易忘记
return ret;
}