zoukankan      html  css  js  c++  java
  • [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 ****************************************************************/
  • 相关阅读:
    uva400 Unix ls
    cf641 div2 abcd
    cf619 div2 abcd
    cf620 div2 abcde
    atc160
    cf638 div2 abcd
    CodeCraft-20(Div. 2 abcd
    cf Round 621 abcd
    luogu1941 飞扬的小鸟
    UVA1601 The Morning afther Halloween
  • 原文地址:https://www.cnblogs.com/easonliu/p/3639171.html
Copyright © 2011-2022 走看看