查找字符串中的最長無重復字符的子串


問題:給定一個字符串,查找其最長無重復字符的子串,並輸出其長度

示例:

  輸入:"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;
    
}

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM