題目:
給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。
示例 1:
輸入: “abcabcbb”
輸出: 3
解釋: 因爲無重複字符的最長子串是 “abc”,所以其長度爲 3。
示例 2:
輸入: “bbbbb”
輸出: 1
解釋: 因爲無重複字符的最長子串是 “b”,所以其長度爲 1。
示例 3:
輸入: “pwwkew”
輸出: 3
解釋: 因爲無重複字符的最長子串是 “wke”,所以其長度爲 3。
請注意,你的答案必須是 子串 的長度,“pwke” 是一個子序列,不是子串。
**個人思路:**新建一個空字符串,將輸入的字符串間相互比較,如果不重複,就將該字符加入新的字符串中,再統計新的字符串中字符的個數。
**困難:**我可能想的太簡單了,它爲什麼。。。。
好吧,主要原因是我沒有先給這個字符串排序,要不我試試排序完再進行比較,再試試。
代碼:
#include "pch.h"
#include <iostream>
#include<string>
#include<algorithm>
using namespace std;
int lengthOfLongestSubstring(string s)
{
string a = s;
int number;
int total = 0;
// int i = 0;
number = s.size();
sort(a.begin(), a.begin() + number);
cout << a;
if (number >= 2)
{
for (int j = 1; j <= number; j++)
{
if (a[j] - a[j - 1] != 0)
total++;
}
}
if (number == 1)
{
total = 1;
}
return total;
}
int main()
{
// std::cout << "Hello World!\n";
int a;
a=lengthOfLongestSubstring("ouyangnana");
cout << a;
}
ok,成功了。
不足:如果字符串很大,排序所用時間就很長,會影響時間複雜度。
我對於for循環掌握不夠。