zoukankan      html  css  js  c++  java
  • 找出字符串中最长不重复的子串

    这题 是群里一个人发出来的  我就试着去做了下 他们说 这题蛮水的 我擦了-.-

    花了很长时间 在原有的代码上 修改了很多 自己测了很多组数据 觉得应该对了

    我的方法应该是 hash的思想 但这边我是直接用了map去存 也没差

    假如有个字符串是abbcda 那么我们应该在遍历到第二个b的时候 计算出此时的 len 并且将在b之前的字符 重置为 未访问

    我的思想就是这样的 - 觉得 看代码可以读懂.

     1 #include <iostream>
     2 #include <cstring>
     3 #include <map>
     4 using namespace std;
     5 
     6 map<char,int>mp;
     7 int main()
     8 {
     9     int x , y , st , end , ans , sum , len , mmin , temp;
    10     char str[110];
    11     while( cin >> (str+1) )
    12     {
    13         mmin = st = end = ans = 1;
    14         len = strlen(str+1);
    15         mp.clear();
    16         for( int i = 1 ; i<=len ; i++ )
    17         {
    18             if( !mp[ str[i] ] )
    19             {
    20                 mp[ str[i] ] = i;
    21                 if( i==len )
    22                 {
    23                     sum = i+1-st;
    24                     if( ans<sum )
    25                     {
    26                         ans = sum;
    27                         x = st;
    28                         y = i+1;
    29                     }
    30                 }
    31             }
    32             else
    33             {
    34                 sum = i - st;
    35                 temp = mp[ str[i] ];
    36                 for( int j = mmin ; j<=mp[ str[i] ] ; j++ )
    37                 {
    38                     mp[ str[j] ] = 0;
    39                 }
    40                 mmin = temp + 1;
    41                 mp[ str[i] ] = i;
    42                 if( ans<sum )
    43                 {
    44                     ans = sum;
    45                     x = st;
    46                     y = i ;
    47                 }
    48                 st = temp + 1;
    49             }
    50         }    
    51         cout << x << " " << y << endl;
    52         cout << ans << endl;
    53     }
    54     return 0;
    55 }
    View Code

    每天 群里会有很多有意思的问题 我会尽量将我会的问题 贴出来.

    如果 代码有错误 请告诉我 谢谢

    just follow your heart
  • 相关阅读:
    SDN大作业
    第06组 Beta版本演示
    SqlServer 将多行字段合并成单行
    C# MD5加密字符串
    Request.IsAjaxRequest()总是返回false
    Mybatis 语句包含单引号的写法
    idea每次启动maven项目都貌似读不到配置
    idea下springboot项目配置文件application.properties不生效的问题
    Ubuntu 设置时区
    SpringBoot 使用MyBatis
  • 原文地址:https://www.cnblogs.com/radical/p/3978905.html
Copyright © 2011-2022 走看看