难度中等6933收藏分享切换为英文接收动态反馈
    给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

    示例 1:
    输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
    示例 2:
    输入: s = “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
    示例 3:
    输入: s = “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,”pwke” 是一个子序列,不是子串。

    提示:

    • 0 <= s.length <= 5 * 104
    • s 由英文字母、数字、符号和空格组成
    1. #include<stdio.h>
    2. #include<string.h>
    3. int judgeStrUnique(char * start, char * end){
    4. char checkBit[256]={0};
    5. char* tmp=start;
    6. for(tmp=start; tmp<=end;tmp++)
    7. {
    8. if(checkBit[*((unsigned char*)tmp)]==1)
    9. {
    10. return -1;
    11. }
    12. else
    13. {
    14. checkBit[*((unsigned char*)tmp)]=1;
    15. }
    16. }
    17. return 0;
    18. }
    19. int lengthOfLongestSubstring(char * s){
    20. int n = strlen(s);
    21. int i=0,j=0;
    22. int maxlen=0;
    23. for(i=0;i<n;i++)
    24. {
    25. for(j=i;j<n;j++)
    26. {
    27. int tmplen=j-i+1;
    28. if(!judgeStrUnique(s+i,s+j))
    29. {
    30. if(tmplen>maxlen){
    31. maxlen=tmplen;
    32. }
    33. }
    34. else{
    35. break;
    36. }
    37. }
    38. }
    39. return maxlen;
    40. }
    41. int main(int argc,char* argv[])
    42. {
    43. printf("cfs\r\n");
    44. lengthOfLongestSubstring("abcabcbb");
    45. return 0;
    46. }