提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目信息

二、思路讲解
方向
- 从前向后遍历寻找最长不重复字串长度,两层循环,外层循环确定起始点,内层循环判断是否有重复字符。
- ASCII码最多只有256种;
难点
- 如何判断字符是否重复
- 如何确定i的跳转
解决方法
- 定义一个int型数组rem,容量为256,初始化为0。每要添加新元素,以该元素ASCII码为下标查找rem数组,若不为0,说明子串中已有该元素,此时该子串扩展到最大。
- 跳转到重复元素第一次出现时的下标位置后一位处,以避免了无意义的子串拓展,而重复元素第一次出现时后一位元素的位置(下标+1)早已被我们记录在rem数组之中,就是i的跳转位置。
- 在每次 i 跳转后,即将重新开始拓展新的子串,需要初始化rem数组。
三、C++实现
实现代码如下
#include<bits/stdc++.h>
using namespace std;
int main(){
C++实现找到最长不重复子串长度

本文介绍了一种从前向后遍历的方法,通过一个int型数组记录ASCII码来判断字符是否重复,从而找出字符串中最长不重复字串的长度。详细思路和C++实现代码见正文。
最低0.47元/天 解锁文章
1323

被折叠的 条评论
为什么被折叠?



