阿凡卢 发表于 2012-10-25 01:35:32

求字符串中最长无重复字符的子串

题目:求一个字符串中最长的没有重复字符的子串。
方法一:穷举法,使用2重外循环遍历所有的区间,用2重内循环检验子串是否符合“无重复字符”这一要求。其中外层循环i、j 遍历所有的下标,m、n是内层循环,检查区间是否符合要求。空间复杂度是O(1),时间复杂度O(N^4)。
//O(N^4)的时间复杂度int max_unique_substring1(char * str){    int maxlen = 0;    int begin = 0;    int n = strlen(str);    for(int i=0; i<n; ++i)      for(int j=1; j<n; ++j)      {            int flag = 0;            for(int m=i; m<=j; ++m)            {                for(int n=m+1; n<j; ++n)                {                  if(str == str)                  {                        flag = 1;                        break;                  }                }                if(flag == 1) break;            }            if(flag==0 && j-i+1>maxlen)            {                maxlen = j-i+1;                begin = i;            }      }    printf("%.*s\n", maxlen, &str);    return maxlen;}
页: [1]
查看完整版本: 求字符串中最长无重复字符的子串