lc 无重复字符的最长子串

链接:https://leetcode-cn.com/explore/interview/card/bytedance/242/string/1012/

代码:

#include<algorithm>
class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int res = 1;
        int len = s.size();
        if(len == 0) return 0;
        if(len == 1) return 1;
        int count[len];
        for(int i = 0; i < len; i++) {
            count[i] = 1;
        }
        // cout << "----" << endl;
        for(int i = 1; i < len; i++) {
            // cout << "====" << endl;
            for(int j = i-1, temp = count[i-1]; temp > 0 && j >= 0; temp--, j--) {
                // cout << s[j] << " " << s[i] << " " << count[i] << endl;
                if(s[j] != s[i]) count[i]++;
                else break;
            }
            if(res < count[i]) res = count[i];
        }
        return res;
    }
};
View Code

思路:初始化每个 count都是 1,由于是子串,最大长度自然是 count[i-1] +1, 将当前位置字母之前的 count[i-1]长度的字符比较,若相等 count[i]++,否则 break 掉,先下笔,再敲键盘。

猜你喜欢

转载自www.cnblogs.com/FriskyPuppy/p/12907909.html
今日推荐