给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
开始的想法是在对字符数组设置两个指针,初始化一个在位置0一个在位置1,ans初始化为1(非空),然后1向后找,0不动,取0到1之间的字符串,判断是否重复(这里单独写一个函数,输入字符串,输出是否重复以及重复字符的后一个的位置),不重复的话用后位置减去前位置,再和ans比较,大的话就保留。如果有重复则前位置向后移动一位,后位置在其后面一位,接着判断之间的字符串是否重复。
#include <iostream> using namespace std; //判断是否有重复 bool re_or_not(string s) { int len= s.length(); for(int i=0;i<len;i++){ for(int j=i+1;j<len;j++){ if(s[i]==s[j]){ std::cout << " true" << std::endl; return true; } } } std::cout << " false" << std::endl; return false; } int lengthOfLongestSubstring(string s) { //char* p1=(char*)s.data(); //char* p1=&s[0]; //char* p2=p1+1; int len=s.length(); //判空 if(len==0) return 0; int num=1; int begin=0; int end=begin+1; int n=0; while(s[end]!='