题目描述:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
原题链接:力扣
解题思路:采用滑动窗口进行求解,将未重复的子串一直保持在滑动窗口内,若窗口外的下一个字符与窗口内的任意字符相等,则移动左指针到窗口内相同字符的下一个索引,若没有相等的,则窗口向右扩展。
值得注意的是:窗口双指针在初始化的时候,都是指向给定字符串的第一个索引,因此在while循环内部开始时,加判断条件if;并且在计算最大长度时要放置在right++的前面。
// leetcode11_最长无重复子串.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include#include using namespace std; int _tmain(int argc, _TCHAR* argv[]) { string s = "abcabsdca"; int left = 0; int right = 0; int maxLen = 1; int len = s.size(); while (right maxLen) { maxLen = right - left + 1; } right++; } cout << maxLen << endl; return 0; }



