日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Jobdu] 题目1530:最长不重复子串

發布時間:2023/12/2 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Jobdu] 题目1530:最长不重复子串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述:

最長不重復子串就是從一個字符串中找到一個連續子串,該子串中任何兩個字符都不能相同,且該子串的長度是最大的。

?

輸入:

輸入包含多個測試用例,每組測試用例輸入一行由小寫英文字符a,b,c...x,y,z組成的字符串,字符串的長度不大于10000。

?

輸出:

對于每組測試用例,輸出最大長度的不重復子串長度。

?

樣例輸入:
absd abba abdffd
樣例輸出:
4 2 4

阿爾卡特2013年實習生招聘筆試題

?

1 #include <iostream> 2 using namespace std; 3 4 int main() { 5 string s; 6 while (cin >> s) { 7 int *a = new int[s.length()]; 8 int max = 1; 9 bool flag; 10 a[0] = 1; 11 for (int i = 1; i < s.length(); ++i) { 12 flag = true; 13 for (int j = 1; j <= a[i - 1]; ++j) { 14 if (s[i - j] == s[i]) { 15 a[i] = j; 16 flag = false; 17 break; 18 } 19 } 20 a[i] = flag ? a[i - 1] + 1 : a[i]; 21 max = max > a[i] ? max : a[i]; 22 } 23 cout << max << endl; 24 } 25 return 0; 26 }

?滑動窗口!

1 #include <iostream> 2 #include <string> 3 #include <vector> 4 #include <algorithm> 5 using namespace std; 6 7 string s; 8 vector<int> pos; 9 10 void solve() { 11 int start = 0, len = 0; 12 pos.assign(256, -1); 13 for (int i = 0; i < s.length(); ++i) { 14 if (pos[s[i]] >= start) { 15 start = pos[s[i]] + 1; 16 } else { 17 len = max(len, i - start + 1); 18 } 19 pos[s[i]] = i; 20 } 21 cout << len << endl; 22 } 23 24 int main() { 25 while (cin >> s) { 26 solve(); 27 } 28 return 0; 29 } 30 /************************************************************** 31 Problem: 1530 32 User: hupo250 33 Language: C++ 34 Result: Accepted 35 Time:50 ms 36 Memory:1520 kb 37 ****************************************************************/

?

?

轉載于:https://www.cnblogs.com/easonliu/p/3639171.html

總結

以上是生活随笔為你收集整理的[Jobdu] 题目1530:最长不重复子串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。