小猪佩qier 2024-12-26 20:59 采纳率: 0%
浏览 16

leetcode无重复字符的最长子串

问题:3. 无重复字符的最长子串,
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。

解法(类似双指针)

int lengthOfLongestSubstring(string s) { 
        unordered_set<char>ch;
        int len = s.length();
        int end = 0;
        int lensubStr = 1;
        while (end < len)
        {
            //出现过
            if (ch.count(s[end]))
            {
                if (ch.size() > lensubStr)
                {
                    lensubStr = ch.size();
                }
                unordered_set<char>::iterator it = ch.find(s[end]);
                it++;
               //删除ch中从头到跟s[end]相同的所有元素
                ch.erase(ch.begin(), it);
            }
            ch.insert(s[end]);
            end++;
        }
        return lensubStr;

针对用例string s = "pwwkew" 在vs 上运行结果:

3

F:\音视频面试准备\leetcode\others\3lengthOfLongestSubstring\Debug\3lengthOfLongestSubstring.exe (进程 15912)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

但实际在leetcode 上提交确是4

img

有知道是什么情况吗?

  • 写回答

1条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你的代码和描述来看,你的代码应该能够正确地处理示例字符串 "pwwkew",并返回正确的结果 3。在 LeetCode 上提交后得到的结果与实际运行结果不符的情况可能是由于以下原因造成的:

    1. 代码输入或提交问题:确保你在提交时提交的是完整的函数 lengthOfLongestSubstring,并且函数定义和提交的内容是一致的。有时候,由于复制粘贴等原因,可能会导致提交的代码与实际的代码不同。
    2. 环境问题:虽然这种情况较为少见,但不同的编程环境(如不同的编译器版本、操作系统等)可能会导致代码运行结果不一致。确保你在本地和 LeetCode 上使用的环境是一致的。
    3. 测试用例细节差异:有时候,题目的测试用例可能存在一些细微的差异或隐藏条件。确保你完全理解题目的要求和所有测试用例的细节。

    为了解决这个问题,你可以尝试以下步骤:

    • 确保在本地运行通过所有测试用例的代码再提交到 LeetCode。
    • 在 LeetCode 上重新运行你的代码,看看是否有任何错误提示或异常输出。
    • 如果仍然存在问题,可以尝试重新编写代码或使用其他方法来解决这个问题,然后再次提交。

    另外,建议你在提交之前仔细检查代码,确保它能够处理各种边界情况和特殊情况。这样可以避免由于潜在的问题导致的错误结果。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月26日