Longest Substring Without Repeating Characters

3.Longest Substring Without Repeating Characters

Given a string, find the length of the longest substring without repeating characters.

Example 1:

Input: "abcabcbb"
Output: 3 
Explanation: The answer is "abc", with the length of 3.

Example 2:

Input: "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.

Example 3:

Input: "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.

Note that the answer must be a substring, "pwke" is a subsequence and not a substring.ios

Code

//
//  main.cpp
//  最長無重複子串
//
//  Created by mac on 2019/7/16.
//  Copyright © 2019 mac. All rights reserved.
//

#include <iostream>

#include <string.h>

#include <algorithm>

#include <vector>

using namespace std;

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        string tmp="";
        vector<int> Max = {0};
        for (int i=0; i<s.size(); ++i) {
            if (tmp.find(s[i])==18446744073709551615 && !s.empty()) {
                tmp.append(1,s[i]);
                if(i==s.size()-1){
                    Max.push_back(tmp.size());
                }
                
            }else{
                Max.push_back(tmp.size());
                i=i-tmp.size();
                tmp="";
            }
            
        }
        return *max_element(Max.begin(),Max.end());
    }
};

int main(int argc, const char * argv[]) {
    
    string a="ghhvvgyjkkkhgfrtyjjhhhhuuikikjhytyyuik";
    string b="";
    if (a==b) {
        cout<<"相等"<<endl;
    }
    //cout<<a[1]<<endl;
   // cout<<a.size()<<endl;
    //18446744073709551615
    //cout<<a.find("k")<<endl;
    if (-1!=18446744073709551615) {
        cout<<"相等了"<<endl;
    }
    
    Solution so;
    cout<<so.lengthOfLongestSubstring(a)<<endl;
    
    cout<<a.empty()<<endl;

    return 0;
}

運行結果

8
0
Program ended with exit code: 0

參考文獻

相關文章
相關標籤/搜索