刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

编程实现: 

给定一个字符串 S (5<S 长度<50) ,请找出 S 中不含重复字符的最长子串的长度。

例如:s 为 ababc,其中 ababaababbababc,均为包含重复字符 的子串;而 ababbc 均为不含重复字符的子串,最长子串有 abc,所以不含重复字符的最长子串的长度为 3。 

输入描述

输入一个字符串 S (5<S 长度<50) 

输出描述

输出一个整数,表示 S 中不含重复字符的最长字串的长度


【输入样例】 

ababc

【输出样例】

3

使用微信搜索喵呜刷题,轻松应对考试!

答案:

```pythondef find_max_length(s):max_length = 0current_length = 0char_set = set()for char in s:if char in char_set:current_length = 0else:current_length += 1max_length = max(max_length, current_length)char_set.add(char)return max_lengths = input()print(find_max_length(s))```

解析:

【喵呜刷题小喵解析】:

本题要求找出给定字符串中不含重复字符的最长子串的长度。可以使用滑动窗口的方法来解决这个问题。

首先,定义一个空集合 `char_set` 来保存当前窗口内的字符,初始长度为0。遍历字符串 `s`,如果当前字符在 `char_set` 中已经存在,说明当前窗口内有重复字符,需要将窗口左边界右移一位,同时将 `current_length` 重置为0。否则,将当前字符加入 `char_set`,并将 `current_length` 加1。在每次更新 `current_length` 后,将其与 `max_length` 比较,更新 `max_length` 的值。

最后,返回 `max_length` 即可。

在主函数中,首先读入字符串 `s`,然后调用 `find_max_length` 函数计算不含重复字符的最长子串的长度,并输出结果。
创作类型:
原创

本文链接:编程实现:  给定一个字符串 S (5<S 长度<50) ,请找出 S 中不含重复字符的最长子串的长

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share