本文共 755 字,大约阅读时间需要 2 分钟。
由 26 个小写字母组成的 str,在 str中查找最长连续字符串不相同的子串。
如abcae, 连续子串是bcae
table记录的是字符最近出现的位置;
int maxDiff(char * str){ int table[26] = {-1}; memset(table,-1,sizeof(table)); int loop = 0; int max_len = 0; int tmp_len = 0; int len = strlen(str); table[str[0] - 'a'] = 0; max_len = 1; tmp_len = 1; for (int i = 1; i < len ;++i) { int last = table[str[i] - 'a']; if (last == -1) { tmp_len++; } else if (i - tmp_len > last) { tmp_len++; } else { tmp_len = i - last; } table[str[i] - 'a'] = i; if (max_len < tmp_len) max_len = tmp_len; } return max_len;}int main() {//3*2 char *a = "abcae"; cout<<
转载地址:http://mteti.baihongyu.com/