閱讀284 返回首頁    go 小米 go 小米5


九度題目1530:最長不重複子串

題目1530:最長不重複子串
時間限製:1 秒
內存限製:128 兆
特殊判題:否
提交:873
解決:284
題目描述:
最長不重複子串就是從一個字符串中找到一個連續子串,該子串中任何兩個字符都不能相同,且該子串的長度是最大的。


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


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


樣例輸入:
absd
abba
abdffd

樣例輸出:
4
2
4

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

 

 

AC代碼:

#include<stdio.h>
#include<string.h>
char a[11000];
int b[11000];
int flag[28];
int main()
{
    int i,j,n,m,sum,max;
    while(scanf("%s",a)!=EOF)
    {
       n=strlen(a);m=0;
       for(i=0;i<n;i++)
       {
          b[m++]=a[i]-'a';
       }
       sum=0;max=-9999999;
       for(i=0;i<m;i++)//沒有回溯就WA了 
       {
          memset(flag,0,sizeof(flag));
          sum=0;
          for(j=i;j<m;j++)
          {
             if(!flag[b[j]])
             {
                 flag[b[j]]=1;
                 sum++; 
                 if(sum>max)
                 max=sum;           
             }
             else break;
          } 
       }
       printf("%d\n",max);
       memset(a,0,sizeof(a));
    }
    return 0;
}

最後更新:2017-04-03 12:56:25

  上一篇:go 對Android GPS獲取位置信息的新研究
  下一篇:go 連載:麵向對象葵花寶典:思想、技巧與實踐(28) - 設計原則:內聚&amp;耦合