求给定字符串中最长的无重复子串(字符子串中无重复字符)的长度,注:最长为128,不考虑输入字符串中有空格情况 输入输出格式 printf("Please input the string\n"); scanf("%s"); printf("values are %d\n"); 函数原型 int lengthOfLongestSubstring(char* s)
时间: 2024-03-20 07:41:50 浏览: 66
python 实现给定一个字符串,找出不含有重复字符的最长子串的长度
5星 · 资源好评率100%
好的,你的问题是关于求给定字符串中最长的无重复子串的长度。下面是一个参考代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 128
int lengthOfLongestSubstring(char* s) {
int len = strlen(s);
int max_len = 0;
int char_map[256];
memset(char_map, -1, sizeof(char_map));
int start = 0;
for (int i = 0; i < len; i++) {
if (char_map[s[i]] >= start) {
start = char_map[s[i]] + 1;
}
char_map[s[i]] = i;
int cur_len = i - start + 1;
if (cur_len > max_len) {
max_len = cur_len;
}
}
return max_len;
}
int main() {
char s[MAX_LENGTH];
printf("Please input the string:\n");
scanf("%s", s);
int len = lengthOfLongestSubstring(s);
printf("The length of longest substring is %d\n", len);
return 0;
}
```
代码中使用了一个`char_map`数组来记录每个字符最后出现的位置,起始值为-1。然后使用`start`记录当前的无重复子串的起始位置,每当遇到重复字符时,更新`start`的值。最后计算最长无重复子串的长度并返回。
阅读全文