[3] Leetcode No longest string of repeated characters C ++

Here Insert Picture Description
Here Insert Picture Description

/*
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
*/

#include "iostream"
#include "string"

using namespace std;

class Solution
{
public:
    int lengthOfLongestSubstring(string s)
    {
        int size, left = 0, right, k, max = 0, tmp;
        // 注意这里使用动态规划,i是字串的左边界
        size = s.size();
        // 可以看作向空字符串中逐次添加字符
        for (right = 0; right < size; right++)
        {
            // 从左边界向后遍历
            for (k = left; k < right; k++)
            {
                // 如果加入的第j个字符,与前面的重复
                // 则更长的字串(如果有的话)不会包含第k位前面的任意字串
                if (s[k] == s[right])
                {
                    // 更新左边界
                    left = k + 1;
                    break;
                }
            }
            tmp = right - left + 1;
            max = tmp > max ? tmp : max;
        }
        return max;
    }
};

int main(void)
{
    Solution S;
    string s;
    int max;    
    cin >> s;

    max = S.lengthOfLongestSubstring(s);
    cout << max << endl;

    return 0;
}
Published 64 original articles · won praise 121 · Views 9010

Guess you like

Origin blog.csdn.net/weixin_44936889/article/details/104058329