無重複字符的最長子串

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

示例 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循環掌握不夠。

發佈了26 篇原創文章 · 獲贊 0 · 訪問量 613
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章