返回信息流本菜鸡刚开始刷题遇到了自己想不通的问题,前来问问各位前辈
第三题
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
unordered_set<char> dict;
int ans = 0;
for(int i = 0; i < s.size();)
{
if(dict.find(s[i]) == dict.end())
{
dict.insert(s[i]);
++i;
}
else
{
ans = ans > dict.size() ? ans : dict.size();
dict.erase(dict.begin(),dict.find(s[i])); //左闭右开
dict.erase(s[i]);
}
}
ans = ans > dict.size() ? ans : dict.size();
return ans;
}
};
就每次提交的时候会卡在这个示例
但是我在自己的vs2017上跑的是正确的
请前辈们指点迷津!
这是一条镜像帖。来源:北邮人论坛 / cpp / #101388同步于 2021/11/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
力扣刷题困惑
hyq123
2021/11/11镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
【 在 yaqin 的大作中提到: 】
: dict.erase(dict.begin(),dict.find(s[i])); //左闭右开
: 这一行没办法保证删除的是s[i]之前的所有元素吧?
怎么说?没太明白
unordered_set内部的排列顺序、迭代器迭代的顺序未必和你插入的顺序相同。比如顺序插入abc,用迭代器遍历输出一遍未必是abc
所以问题应该就出在你那句带备注的范围删除
【 在 hyq123 的大作中提到: 】
: 本菜鸡刚开始刷题遇到了自己想不通的问题,前来问问各位前辈
: 第三题
: 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
: ...................
利用桶排序的思想稍微改一下下标应该不算太难