求字符串中最长无重复字符的子串
题目:求一个字符串中最长的没有重复字符的子串。方法一:穷举法,使用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]