#leetcode刷題之路3-無重複字元的最長子串

maitianpt發表於2019-02-25

給定一個字串,請你找出其中不含有重複字元的 最長子串 的長度。

示例 1:
輸入: “abcabcbb”
輸出: 3
解釋: 因為無重複字元的最長子串是 “abc”,所以其長度為 3。

 

字元陣列和字串的區別,C語言字元陣列和字串區別詳解

開始的想法是在對字元陣列設定兩個指標,初始化一個在位置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]!=`

相關文章