LeetCode-3-无重复字符的最长子串-C语言

博客围绕LeetCode,涉及C语言算法相关内容。在信息技术领域,LeetCode是算法练习的重要平台,C语言作为经典编程语言,其算法实现有重要意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int lengthOfLongestSubstring(char* s) {
    int start=0,maxLen=0,index=0;
    char c;
    int arr[256];
    int len ;
    
    memset(arr, 0, sizeof(arr));
   
    for(; s[index] !='\0';index++){
        
        if(arr[s[index]]){
            /* if found current letter exeists, remove letters before exeisted letter and matchming letter */
            /* remove before letters */
            while(s[index] != s[start]){
                arr[s[start]]--;
                start++;
            }
            
            /* remove the matchming latter */
            arr[s[start]]--;
            
            /* set start in the new loop */
            start++;
            
        }else{
            /* none letter exeists, do nothing */
        }
        
        /* set current letter exeists */
        arr[s[index]]++;
        
        len = index - start + 1;
        
        if(len > maxLen){
            maxLen = len;
        }
    }
    
    return maxLen;
}

--20190707
int lengthOfLongestSubstring(char * s){
    int max = 0;
    int cnt[256]={0};
    int i = 0, j=0;
    int len = 0;

    while(s[j]){
        if(cnt[s[j]]){
            while(s[i] != s[j]){
                cnt[s[i]]--;
                i++;
                len--;
            }
            i++;
        }else{
            if(++len > max){
                max = len;
            }
            cnt[s[j]]++;
        }
        j++;
    }
    
    return max;
}

--20220730
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值