美文网首页
3.无重复字符的最长子串

3.无重复字符的最长子串

作者: 无名的殇 | 来源:发表于2018-05-12 11:44 被阅读0次

    题目


    思路
    1.字符串查找重复字符
    2.有重复字符则处理重复字符之间的数据并记录长度
    代码

    int lengthOfLongestSubstring(char* s) {
        
        int maxlen = 0,currlen = 0;
        int table[128], i, j, start = 0;
        memset(table, 0, sizeof(table));
        
        for (i = 0; s[i] != '\0'; ++i){
            if( (++table[s[i]]) == 2 ){//判断重复
                if (currlen > maxlen){
                    maxlen = currlen;//记录最长长度
                }
                for(j = start; j < i; ++j){ //*start记录重复的字符后一个位置
                    if (s[j] == s[i]){
                        table[s[j]] = 1;
                        start = j+1;
                        break;
                    }else{
                        //清空数组,重置记录长度
                        --currlen;
                        table[s[j]] = 0;
                    }
                }
            }else{
                ++currlen;//无重复记录长度自加
            }
        }
        if (currlen > maxlen){
            maxlen = currlen;
        }
        return maxlen;
    }
    

    相关文章

      网友评论

          本文标题:3.无重复字符的最长子串

          本文链接:https://www.haomeiwen.com/subject/ghicdftx.html