栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

leetcode最热HOP100--P3无重复字符的最长字串(c语言)(简单解法)(滑动窗口)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode最热HOP100--P3无重复字符的最长字串(c语言)(简单解法)(滑动窗口)

目录

问题:

代码

       思路

最后(笔者的絮絮叨叨)


问题:

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

(我们先看看ac代码)

代码
	int left = 0;          //左窗口
    int right = 0;         //右窗口
    int i,j;
    int len = strlen(s);    //计算字符串长度,便于之后判断是否结束遍历
    int max = 0;            //存放最长的无重复字符的子字符串的长度
   
 //用于判断一串字符串是否出现重复字符
    int havesamechar=0;        
        
  // 让左右窗口进行滑动,直到字符串结束
    for( i = 0 ; i < len ; i++ ){        
       havesamechar = 0;            
       for( j=left ; j 

(题解来自于leetcode上名为我自横刀向天笑,id为goodgoodday)

        这段代码用到的解题思想是滑动窗口算法。        

       思路

         用两个变量分别来不断地在字符串上滑动,也是就是不断指向字符串。本段代码左窗口是left和右窗口是right

        先让右窗口进行滑动,每滑动一次,就得让左窗口以及他们之间的所有字符跟右窗口进行判断,检查是否有相同的字符。若是发现有相同字符,我们就让左窗口直接跳转到和右窗口相同字符的下一个字符,然后继续让右窗口滑动。

最后(笔者的絮絮叨叨)

        这题写了我半天,最开始看到这题时我就有思路了。我的想法:因为每一个字符都有自己唯一的十进制的ASCII码,且恰好这是一个字符串,可以让一个长度为a[127]的数组在对应的位置记录子字符串的情况。我们遍历数组,每走一步,我们就判断是否有重复字符,但是我发现这样的话,在判断出有重复字符时,我无法找出前面对应的重复字符的位置。也就无法让循环跳转到那个位置继续子串的判断。:(

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971718.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号