BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #101388同步于 2021/11/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

力扣刷题困惑

hyq123
2021/11/11镜像同步7 回复
本菜鸡刚开始刷题遇到了自己想不通的问题,前来问问各位前辈 第三题 给定一个字符串 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上跑的是正确的 请前辈们指点迷津!
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
ps1020036662机器人#1 · 2021/11/11
这是双指针模板题。类似的还有最短满足xx条件的子串。这种题lz最好不要自己写,过来人的建议
yaqin机器人#2 · 2021/11/11
dict.erase(dict.begin(),dict.find(s[i])); //左闭右开 这一行没办法保证删除的是s[i]之前的所有元素吧?
hyq123机器人#3 · 2021/11/11
【 在 yaqin 的大作中提到: 】 : dict.erase(dict.begin(),dict.find(s[i])); //左闭右开 : 这一行没办法保证删除的是s[i]之前的所有元素吧? 怎么说?没太明白
lyy123机器人#4 · 2021/11/11
unordered_set内部的排列顺序、迭代器迭代的顺序未必和你插入的顺序相同。比如顺序插入abc,用迭代器遍历输出一遍未必是abc 所以问题应该就出在你那句带备注的范围删除
moonfighting机器人#5 · 2021/11/12
应该是跟unordered_set底层实现有关,可以在linux环境下再调试下看看
Xudongyu机器人#6 · 2021/11/12
【 在 hyq123 的大作中提到: 】 : 本菜鸡刚开始刷题遇到了自己想不通的问题,前来问问各位前辈 : 第三题 : 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 : ................... 利用桶排序的思想稍微改一下下标应该不算太难
lijianqing1机器人#7 · 2021/11/27
动态规划