用c++写一个统计字符串中最长非重复子串的长度
时间: 2023-05-16 14:05:56 浏览: 73
以下是用 C 语言编写的统计字符串中最长非重复子串的长度的代码:
```c
#include <stdio.h>
#include <string.h>
int longestSubstring(char *str) {
int len = strlen(str);
int maxLen = 0;
int start = 0;
int end = 0;
int i, j;
int charIndex[256];
for (i = 0; i < 256; i++) {
charIndex[i] = -1;
}
for (i = 0; i < len; i++) {
if (charIndex[str[i]] >= start) {
start = charIndex[str[i]] + 1;
}
charIndex[str[i]] = i;
end = i;
if (end - start + 1 > maxLen) {
maxLen = end - start + 1;
}
}
return maxLen;
}
int main() {
char str[] = "abcabcbb";
int len = longestSubstring(str);
printf("The length of the longest non-repeating substring is %d\n", len);
return 0;
}
```
如果输入的字符串是 "abcabcbb",则输出结果为:
```
The length of the longest non-repeating substring is 3
```
这个结果是正确的,因为 "abc" 是该字符串中最长的非重复子串,其长度为 3。