用c语言书写无重复字符串最大长度
时间: 2024-09-28 11:04:24 浏览: 13
在C语言中,计算无重复字符的字符串的最大长度通常涉及到哈希表(如`unordered_set`或`std::set`)来跟踪已经遇到过的字符。以下是一个简单的算法:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#define MAX_CHAR 128 // Assuming ASCII characters
bool hasDuplicateChars(char* str) {
bool charSet[MAX_CHAR] = {false}; // 初始化一个布尔数组
int len = strlen(str);
for (int i = 0; i < len; ++i) {
if (charSet[str[i]]) { // 如果字符已经在集合中
return true;
}
charSet[str[i]] = true; // 否则将字符添加到集合中
}
return false; // 没有找到重复字符,返回false
}
int maxUniqueLength(char* str) {
int maxLength = 0;
while (!hasDuplicateChars(str)) {
maxLength++;
str++; // 移动指针检查下一个字符
}
return maxLength;
}
int main() {
char input[] = "abcabcbb"; // 测试字符串
int result = maxUniqueLength(input);
printf("无重复字符的最长子串长度是: %d\n", result);
return 0;
}
```
在这个示例中,`hasDuplicateChars`函数用于检查字符串是否有重复字符,而`maxUniqueLength`函数通过不断增长子串并检查是否包含重复字符来寻找最大长度。在`main`函数中,你可以传入你想要测试的任意字符串。