给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。c语言
时间: 2024-10-13 15:17:11 浏览: 57
在C语言中,你可以使用滑动窗口或者哈希集合(如`std::unordered_set`)来解决这个问题。这里是一个基于滑动窗口思想的解决方案:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
int lengthOfLongestSubstring(char* s) {
int n = strlen(s);
if (n == 0) return 0;
int left = 0, right = 0;
int maxLength = 0;
bool visited[256] = {false}; // 假设字符集大小为ASCII
while (right < n) {
// 如果当前字符未访问过,或者右边界位置的下一个字符还未访问过
if (!visited[s[right]] || (visited[s[right]] && right - left + 1 > maxLength)) {
visited[s[right]] = true;
maxLength = right - left + 1;
} else {
// 否则,将左边界向右移动一位,并清空该字符的访问标记
visited[s[left]] = false;
left++;
}
right++;
}
return maxLength;
}
int main() {
char s[] = "pwwkew";
printf("Length of longest substring without repeating characters: %d\n", lengthOfLongestSubstring(s));
return 0;
}
```
这个函数的主要思路是从前往后遍历字符串,维护一个左边界left和右边界right,同时记录已知的最长无重复子串长度maxLength。当遇到重复字符时,更新左边界并清除对应的访问标记,直到右边界处的字符不再重复。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)