无重复字符的最长字串C语言无指针
时间: 2023-10-29 16:09:02 浏览: 102
PHP中实现中文字串截取无乱码的解决方法
以下是一个基于数组的 C 语言代码实现,用于寻找给定字符串中的最长无重复字符子串:
```c
#include <stdio.h>
#include <string.h>
int longestSubstring(char* str);
int main()
{
char str[100];
int length;
printf("请输入一个字符串:");
scanf("%s", str);
length = longestSubstring(str);
printf("最长无重复字符子串长度为 %d\n", length);
return 0;
}
int longestSubstring(char* str)
{
int length = strlen(str);
int maxLength = 0, start = 0;
int visited[256] = {0};
for (int i = 0; i < length; i++) {
if (visited[str[i]] == 1) {
while (str[start] != str[i]) {
visited[str[start]] = 0;
start++;
}
start++;
} else {
visited[str[i]] = 1;
if (maxLength < i - start + 1) {
maxLength = i - start + 1;
}
}
}
return maxLength;
}
```
该代码使用了一个长度为 256 的数组来记录字符是否已经出现,如果出现则将其标记为已经访问过。如果当前字符已经访问过,则从起始位置开始向右查找,直到找到第一个和当前字符相同的字符,将起始位置移动到该位置的后一位。如果当前字符没有访问过,则将其标记为已访问,并更新最长子串长度。
阅读全文