微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

最长子串没有重复暴力算法错误leetcode

如何解决最长子串没有重复暴力算法错误leetcode

我已经尝试了一整天仍然没有答案。除了这种 std::find(substr.begin(),substr.end(),s[j]) != substr.end() 技术之外,我不知道如何查找向量中是否存在元素。
看我的代码

class Solution {
    public:
        int lengthOfLongestSubstring(string s) {
        int max_length = 0;
        
        for(int i=0;i<s.length();i++){
            int temp = 0;
            for(int j=i;j<s.length();j++){
                
                vector<char> substr;
                
                //char ele = s[j];
                if(substr.empty()){
                    substr.push_back(s[j]);
                    temp++;
                    
                }
                else if( std::find(substr.begin(),s[j]) != substr.end()){
                    substr.push_back(s[j]);
                    temp++;
                    cout<<j<<" iteration "<<temp<<endl;
                }else{
                    break;
                }
            }
            //cout<<temp<<endl;
            max_length = max(temp,max_length);
        }
        
    return max_length;
    }
};

问题是没有重复字符的最长子串

给定一个字符串s,求没有重复字符的最长子字符串的长度。

示例 1:

输入:s = "abcabcbb" 输出:3 解释:答案是“abc”,长度为3。 示例 2:

输入:s = "bbbbb" 输出:1 解释:答案是“b”,长度为1。 示例 3:

输入:s = "pwwkew" 输出:3 解释:答案是“wke”,长度为3。 请注意,答案必须是子字符串,“pwke”是子序列而不是子字符串。 示例 4:

输入:s = "" 输出:0

如果条件 (std::find(substr.begin(),s[j]) != substr.end()) 未按预期工作,因此我的温度不会增加

代码

  1. 对于每个大于 i 的字母,向量将后续的非重复字母存储到该向量中,然后增加温度
  2. 如果你发现一个字母出现在向量中,那么就跳出循环
  3. 比较它是否大于 max 如果是,则替换 max 如果不​​是继续所有其他字母。

ps:我是编码新手,这是我的第一个问题。如果我做错了什么,请帮助我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。