程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 九度oj 1530 最長不重復子串,oj1530

九度oj 1530 最長不重復子串,oj1530

編輯:C++入門知識

九度oj 1530 最長不重復子串,oj1530


原題鏈接:http://ac.jobdu.com/problem.php?pid=1530

字符串簡單題,看似O(n^2)的復雜度10000的數據量會tle,其實最長不重復子串不超過26個嘛。。。

如下:

1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstdio> 6 using std::max; 7 const int Max_N = 10010; 8 int vis[26]; 9 char buf[Max_N]; 10 void solve(){ 11 int i, j, ans = 0, n = strlen(buf); 12 for (i = 0; i < n - 1; i++){ 13 int t = 1; 14 memset(vis, 0, sizeof(vis)); 15 vis[buf[i] - 'a'] = 1; 16 for (j = i + 1; j < n; j++){ 17 if (!vis[buf[j] - 'a']){ 18 vis[buf[j] - 'a'] = 1; 19 t++; 20 } else { 21 break; 22 } 23 } 24 ans = max(ans, t); 25 } 26 printf("%d\n", ans); 27 } 28 int main(){ 29 #ifdef LOCAL 30 freopen("in.txt", "r", stdin); 31 freopen("out.txt", "w+", stdout); 32 #endif 33 while (~scanf("%s", buf)) solve(); 34 return 0; 35 } View Code

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved