物联网
您现在所在的位置:首页>企业动态>物联网

力扣题库3. 无重复字符的最长子串

编辑:学到牛牛IT培训    发布日期: 2023-09-11 09:05:39  

题目描述:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。


1694394415100.jpg


示例1:

输入: s = "abcabcbb" 

输出: 3 

解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。


示例2:

输入: s = “bbbbb”

输出: 1

解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。

 

题解:

题目要求我们选择最长无重复的子串,首先得明白子串和子序列的区别

子串为字符串中连续的字符,是不可被分割的

子序列为字符串中的字符,是可被分割的

基本思想:定义两个指针分别指向当前无重复字符串的首和尾,然后蠕动遍历全部字符。

第一步:分别定义头、尾指针都指向字符串的首字符

第二步:尾指针先向后一步,检查前面有没有与尾字符重复的字符,有则将头指针移到重复的字符的下一位

第三步:通过第2步获得了新的无重复字符串,根据头尾指针计算长度并记录,重复第二步直到遍历结束

第四步:返回最大的长度


完整代码:

#include <stdio.h>


int lengthOfLongestSubstring(char *str)

{

    char *trail = str;   //  定义尾指针指向字符串的首字符

    char *head = str;   //   定义头指针指向字符串的首字符

    int max = 0;    //  定义一个整型变量用来存储字符串中子串的最大长度

    while (*trail != ‘’)  // 当尾指针指向字符串结束符‘’则退出循环

    {

        char *fp;

 // 再次定义一个指针fp指向头指针指向的字符串的字符,但是不能等于或者超过尾指针指向的字 符串的字符,蠕动遍历当前的无重复子串

        for (fp = head; fp < trail; fp++)

        {

  // 判断指针fp当前指向的字符串的字符是否恒等于尾指针指向的字符串的字符,如果恒等于则表示该无重复子串遍历结束,将头指针移到fp当前指向的字符串的字符的下一位


            if (*fp == *trail)    

         {

                head = fp + 1;

                break;

            }

        }

        max = trail - head + 1 > max ? trail - head + 1 : max; // 算出最长子串的长度

        trail++;

        }

    return max;  // 返回最大长度

}

int main()

{

    char str[] = {"aaaabcaaba"};

    int max = lengthOfLongestSubstring(str);

    printf("max = %d ",max);

    return 0;

}


 


免费试学
课程好不好,不如实地听一听

推荐阅读

  • 计算机专业的就业难度怎么样?

    国产午夜鲁丝片AV无码蜜臀,福利免费观看午夜体检区,人妻少妇精品无码专区APP,伊人久久大香线蕉成人综合网,国产妓女在线观看视频,亚洲成a人片在线观看尤物,亚洲精品国产一二三无码AV,亚汌国产一区二区三区

  • 嵌入式软件开发学习路线

    国产午夜鲁丝片AV无码蜜臀,福利免费观看午夜体检区,人妻少妇精品无码专区APP,伊人久久大香线蕉成人综合网,国产妓女在线观看视频,亚洲成a人片在线观看尤物,亚洲精品国产一二三无码AV,亚汌国产一区二区三区

  • 为什么自学编程那么难?

    国产午夜鲁丝片AV无码蜜臀,福利免费观看午夜体检区,人妻少妇精品无码专区APP,伊人久久大香线蕉成人综合网,国产妓女在线观看视频,亚洲成a人片在线观看尤物,亚洲精品国产一二三无码AV,亚汌国产一区二区三区

  • IT培训机构出来的到底好不好就业呢?

    国产午夜鲁丝片AV无码蜜臀,福利免费观看午夜体检区,人妻少妇精品无码专区APP,伊人久久大香线蕉成人综合网,国产妓女在线观看视频,亚洲成a人片在线观看尤物,亚洲精品国产一二三无码AV,亚汌国产一区二区三区

封闭学习

2

1

18180749853

蜀ICP备2021001672号

在线咨询 免费试听VIP课程