设为首页 加入收藏

TOP

最长不重复子串(阿尔卡特2013年实习生招聘笔试题)
2014-11-23 20:16:29 来源: 作者: 【 】 浏览:1
Tags:最长 重复 阿尔卡特 2013年 实习生 招聘 试题

题目1530:最长不重复子串时间限制:1 秒
内存限制:128 兆
特殊判题:否
提交:362
解决:106

题目描述:
最长不重复子串就是从一个字符串中找到一个连续子串,该子串中任何两个字符都不能相同,且该子串的长度是最大的。


输入:
输入包含多个测试用例,每组测试用例输入一行由小写英文字符a,b,c...x,y,z组成的字符串,字符串的长度不大于10000。


输出:
对于每组测试用例,输出最大长度的不重复子串长度。


样例输入:
absd
abba
abdffd样例输出:
4
2

#include 
#include 
#include 
#include 
#include 
using namespace std;
const int maxn = 10010;

char str[maxn];
bool vis[30];//hash

inline int ind(char x) {
    return x - 'a';
}

void work() {
    int maxv = 0;
    int i, j, cnt = 0;
    int len = strlen(str);
    memset(vis, false, sizeof(vis));
    for(i = 0; i < len; i++) {
        memset(vis, false, sizeof(vis));
        cnt = 0;
        for(j = i; j < len; j++) { //开始没有回溯,wa
            char t = str[j];
            if(!vis[ind(t)]) {
                vis[ind(t)] = true;
                cnt++;
                if(maxv < cnt) maxv = cnt;
            }else break;
        }
    }
    printf("%d\n", maxv);
}

int main()
{
    memset(str, '\0', sizeof(str));
    while(scanf("%s", str) != EOF) {
        getchar();
        work();
        memset(str, '\0', sizeof(str));
    }
    return 0;
}

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu - 3460 - Ancient Printer 下一篇C/C++中程序在使用堆内存时的内存..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)