zoukankan      html  css  js  c++  java
  • 查找字符串中的最长无重复字符的子串

    问题:给定一个字符串,查找其最长无重复字符的子串,并输出其长度

    示例:

      输入:"abcabcbb"

      输出:3

      输入:"bbbbbb"

      输出:1

    C解决方案:

      

    #include <string.h>
    
    //判断最后一个字符在前面的字符串中是否已经存在
    int judgeRepeat(char * s,int left, int right){
        while(left<right){
            if(s[left]==s[right]){
                return left;
            }
            left++;
        }
        return -1;
    }
    
    int lengthOfLongestSubstring(char * s){
        //判断字符串长度是否小于1,小于1直接返回字符串长度
        int length = strlen(s);
        if(length<=1){
            return length;
        }
        
        int left = 0;
        int right = 0;
        int maxLength = right-left+1;
        //循环,每次增加一个字符,判断该字符在之前的字符串中是否已经存在,
        //存在,则将left变为存在的字符串索引+1,不存在,则判断输出的长度是否应该改变
        while(right<length){
            int judge = judgeRepeat(s,left,right);
            if(judge==-1){
                if(maxLength<right-left+1)
                    maxLength = right-left+1;
            }else{
                left = judge+1; 
            }
            right+=1;
        }
        return maxLength;
        
    }

      

  • 相关阅读:
    学习进度笔记14
    学习进度笔记13
    学习进度笔记12
    学习进度笔记11
    学习进度笔记10
    学习进度笔记9
    学习进度笔记8
    学习进度笔记7
    学习进度笔记6
    微信客户端兼容性
  • 原文地址:https://www.cnblogs.com/wenqinchao/p/11435547.html
Copyright © 2011-2022 走看看