zoukankan      html  css  js  c++  java
  • 最长不重复子串

    问题:

    找到一个字符串中的一个连续子串,这个子串内不能有任何两个字符是相同的,并且这个子串是符合要求的最长的。

    程序:

    代码
    /************************************************************************/
    /* 求最长不重复子串                                                     */
    /************************************************************************/

    void lnorepstr(char*  s)
    {
        
    char A[26];
        
    int  i, j;
        
    int  maxi, maxlen = 0;
        
    int  len = strlen(s);

    //    for(i = 0; i < 26; i++)
    //        A[i] = -1;

        memset(A, 
    -126);
        
    for (i = 0; i < len; i++)
        {
            A[s[i] 
    - 'a'= 1;
            
    for(j = i+1 ; j < len; j++)
            {
                
    if(A[s[j]-'a'== -1//该字符没有出现
                {
                    A[s[j]
    -'a'= 1;
                    
    if(j - i> maxlen)
                    {
                        maxlen 
    = j - i;
                        maxi 
    = i;
                    }
                }
                
    else
                    
    break;
            }
            memset(A, 
    -126);
        }
        printf(
    "longest no repeat string: %.*s\n", maxlen+1&s[maxi]);
    }

    假设字符串全部是由小写字母组成,则内层循环最多执行26次,即最长不重复子串的长度为26,此时,时间复杂度为O(26n)。


    作者:arrowcat
    出处:http://www.cnblogs.com/hustcat/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    操作缓冲池
    占位图像
    GCD 常用代码
    资源共享(抢夺)
    drf版本控制 django缓存
    drf分页器
    解析器,路由控制,响应器
    drf 频率组件 META字典详情
    vue创建路由,axios前后台交互,element-ui配置使用,django contentType组件
    redis列表,字典,管道,vue安装,创建项目
  • 原文地址:https://www.cnblogs.com/hustcat/p/1736993.html
Copyright © 2011-2022 走看看