我觉得我写的是对的,但是不知道为什么就是提交不上去,虽然不是最优的解,但是我感觉很是简单易懂。


题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
题目地址:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

个人代码:

#include<iostream>
#include<vector>
#include<set>
#include<algorithm>
using namespace std;

int main() {

    string str1 = "abcabcbb";
    set<int> v;
    int count = 0;
    for (int i = 0; i < str1.length(); ++i) {
        int c =  str1.find(str1[i]);
        v.insert(c);
    }
    for (set<int>::iterator it = v.begin(); it != v.end(); ++it) {
        ++count;
    }
    cout << count;
}

代码释意:
首先是定义一个字符串,然后定义一个set容器,这里不可以使用vector容器,至于为什么等下讲,然后定义一个计数器count,然后就是一个循环,使用string中的find方法查找每个字符第一次出现的位置,然后使用insert方法插入到set容器中,insert方法不允许重复的字符插入到同一容器中,但是如果使用vector容器则会造成重复插入的情况,最后使用迭代器和计数器进行统计,就能得出不重复字符的数量了。