菜鸡leecode刷题--Day3

一点开心

不愧是菜鸡,终于编译成功没再报错了呜呜呜,不过还是没能提交成功。
题目如下:
菜鸡leecode刷题--Day3_第1张图片
我的代码是:

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int l1 = s.length();
        string s1 ={};
        s1 = s1+s[0];
        int maxlen = 1;
        for(int i = 0;i<l1;i++){
             for(int n = 0;n<s1.length();n++){
                 if(s1[n]==s[i+1]){
                     s1 = {};
                     break;
                 }
             }
              s1 = s1+s[i+1];
                 if(s1.length()>maxlen){
                         maxlen = s1.length();
                     }
        }
        //cout<
        return maxlen;
        
    }
};

自我感觉蛮对的,但是在bbbbbb的测试用例里却输出为2,错了,害。
正确答案另附:

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int res = 0, i = 0, j = 0;
        vector<int> idx(128, -1);
        while(j < s.size())
        {
            if(idx[s[j]] >= i)
            {
                res = max(res, j - i);
                i = idx[s[j]] + 1;
            }
            idx[s[j]] = j;
            j++;
        }
        res = max(res, j - i);
        return res;
    }
};

这种解法用了双指针的方法,类似于滑动窗口
体会:string的用法好多,可以当数组一样下标取值,也可以使用charat,清空字符串只需要string s = {};或者调用系统函数。果然需要日常积累!

你可能感兴趣的:(leecode)