zoukankan      html  css  js  c++  java
  • 字符串内无重复字符的最长子串长度

     1 #include <stdio.h>
     2 #include <string.h>
     3 int lengthOfLongestSubstring(char *s) 
     4 {
     5     int size = strlen(s);/*字符串长度*/
     6     int dict[256];
     7     for(int i=0; i<256; ++i)
     8         dict[i] = -1;
     9     int maxlen = 0;/*最大无重复字符串长度*/
    10     int start = -1;/*无重复字符串开始的位置*/
    11     for (int i=0; i<size; ++i) 
    12     {       
    13         if (dict[s[i]] > start) /*一旦字符有了位置记录 说明字符出现重复*/
    14         {
    15             start = dict[s[i]]; /*把该字符上次出现的位置 记录为字符串开始位置*/                  
    16         }
    17         dict[s[i]] = i; /*记录字符出现的位置 更新*/ 
    18         maxlen = maxlen>i-start? maxlen: i-start;/*实时计算无重复字符串长度*/
    19     }
    20     return maxlen;/*返回最大无重复字符串长度*/
    21 }
    22 int main()
    23 {
    24      
    25     char str[100] = "";
    26     char *p = str;
    27     char dict[256] = {0};
    28  
    29     gets(str);
    30     int len = lengthOfLongestSubstring(str);
    31   
    32     for(; *(p+len-1); p++){
    33         char s[20] = "";
    34         strncpy(s, p, len);
    35         if(lengthOfLongestSubstring(s)==len){   
    36             if(!dict[s[0]])
    37                 printf("%s
    ", s );
    38             dict[s[0]] = 1;
    39         }
    40     }
    41     return 0;
    42 }
  • 相关阅读:
    网站搜索功能lucene
    RabbitMQ消息队列
    zookeeper
    RPC+SOA+dubbo
    石英定时任务-quartz
    通用mapper、图片上传、nginx
    通用mapper和分类实现
    后台商品管理功能实现
    构建框架
    海量数据的并发处理
  • 原文地址:https://www.cnblogs.com/GoldenEllipsis/p/10392518.html
Copyright © 2011-2022 走看看