LeetCode 3. Longest Substring Without Repeating Characters ( C ) 最短代码

同步发于 JuzerTech 网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。

题目为给定一个字符串,寻找其中最长的子字符串,并且此子字符串不得有重复之字符。

题目与范例如下

Given a string s, find the length of the longest substring without repeating characters.

Example 1:

Input: s = "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.
Example 2:

Input: s = "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.
Example 3:


Input: s = "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.
Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.
Example 4:

Input: s = ""
Output: 0

Constraints:

0 <= s.length <= 5 * 104
s consists of English letters, digits, symbols and spaces

 

我采用的策略为,使用一个变量纪录子字符串的起始点,子字符串的终止点为目前寻访到的字符,并逐次检查新加入的字符是否与子字符串内的字符有重复,有则把子字符串的起始点设为重复的下一个,每次比较是否比记录中的最长长度还长。

下方为我的代码

void comparechar(char *str,char target,int *submin, int *submax){
    for(int i = *submin ; i < *submax ; i++ ){
        if(str[i] == target){
            *submin = i+1;
            break;
        }
    }
}

int lengthOfLongestSubstring(char * s){
    int index = 0,submin = 0,max = 0;
    while(s[index] != '\0'){
        comparechar(s,s[index],&submin,&index);
        if(index - submin + 1 > max)
            max = index - submin + 1;
        index++;
    }
    return max;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值