您的位置:首页 > 其它

[leetcode]3.longest substring without repeating characters

2016-11-01 10:41 405 查看
题目:

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given 
"abcabcbb"
, the answer is 
"abc"
,
which the length is 3.

Given 
"bbbbb"
, the answer is 
"b"
,
with the length of 1.

Given 
"pwwkew"
, the answer is 
"wke"
,
with the length of 3. Note that the answer must be a substring, 
"pwke"
 is
a subsequence and not a substring.

解题思路:

1.构造一个滑动框,保证框里面的substring没有重复的字符

2.构造一个长度为256的bool型数组作为标志位,如果在滑动框里面的substring,对应的ascii码的标志位为true

代码如下:

class Solution {

public:

    int lengthOfLongestSubstring(string s) {

        int length = s.length();

        if((length == 0) || (length ==1))

            return length;

        bool flag[256] = {false};

        int count = 0;

        int max_count = 0;

        int left = 0;

            

        for(int i=0; i<length; i++)

        {

            char current = s[i];

            if(flag[current] == false)

            {

                flag[current] = true;

                count ++;

            }

            else

            {

                max_count = max(max_count, i-left);

                for(int j=left; j<i; j++)

                {

                    if(s[j] == s[i])

                    {

                        left = j+1;

                        break;

                    }

                    else

                    {

                        count --;

                        flag[s[j]] = false;

                    }

                }

            }

        }

        return max(max_count,count);

    }

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: