給定一個字串,請你找出其中不含有重複字元的 最長子串 的長度。
示例 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]!=`