leetcode_longest substring without repeating characters

来源:互联网 发布:扫描文字的软件 编辑:程序博客网 时间:2024/06/05 00:39

题目:

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.

我的答案:

 int lengthOfLongestSubstring(string s) {int len;    len = s.length();    if(len<1)        return 0;const char *p = s.c_str();set<char> Set;for (int i = 0; i<len; i++)Set.insert(*(p + i));int N = Set.size();if (N == 1)return N;while (N>1){for (int i = 0; i <= len - N; i++){set<char> Setn;    for (int j = 0; j < N; j++)Setn.insert(*(p + i + j));if (Setn.size() == N)return N;Setn.clear();}N--;}}
思路解析:

     我在做这个题目的时候,用到set,这是一种非常好用的数据结构,它里面不存放重复元素,我就是充分利用了这一点。具体是先将字符串转换成字符数组,然后计算整个字符串中有N个不同的字符,然后以长度为N的窗口遍历整个字符数组,若能找到一个位置,使得窗口中所有的字符都不相同,则输出N,否则,将窗口长度减1,重复进行寻找,直到找到最长子字符串,程序退出。需要考虑一些特殊情况,比如输入字符长度为0

阅读全文
0 0
原创粉丝点击