您的位置:首页 > 健康 > 美食 > 橙子建站 推广_专业团队建设实施方案_东莞网站建设快速排名_如何自己免费制作网站

橙子建站 推广_专业团队建设实施方案_东莞网站建设快速排名_如何自己免费制作网站

2025/4/15 20:35:05 来源:https://blog.csdn.net/m0_67598823/article/details/145937293  浏览:    关键词:橙子建站 推广_专业团队建设实施方案_东莞网站建设快速排名_如何自己免费制作网站
橙子建站 推广_专业团队建设实施方案_东莞网站建设快速排名_如何自己免费制作网站

 题目描述:

字母序连续字符串 是由字母表中连续字母组成的字符串。换句话说,字符串 "abcdefghijklmnopqrstuvwxyz" 的任意子字符串都是 字母序连续字符串 。

  • 例如,"abc" 是一个字母序连续字符串,而 "acb" 和 "za" 不是。

给你一个仅由小写英文字母组成的字符串 s ,返回其 最长 的 字母序连续子字符串 的长度。

代码思路:

  1. 初始化变量
    • left 和 right:这两个变量分别表示当前考察的连续子字符串的左右边界。初始时,left 设为 0,right 设为 1,表示从字符串的第二个字符开始向右扩展考察。
    • ans:用来记录目前找到的最长的字母序连续子字符串的长度。初始时,由于每个字符自身都可以看作是一个长度为 1 的连续子字符串,所以 ans 设为 1。
  2. 遍历字符串
    • 使用一个 while 循环遍历字符串,直到 right 达到字符串的长度。
    • 在循环内部,首先检查当前字符 s[right] 和前一个字符 s[right - 1] 是否是连续的(即 ord(s[right]) - ord(s[right - 1]) == 1)。这里 ord() 函数用于获取字符的 ASCII 值。
  3. 更新最长长度
    • 如果当前字符和前一个字符是连续的,则更新 ans 为当前考察的子字符串长度(right - left + 1)和之前记录的最长长度 ans 中的较大值。
    • 如果当前字符和前一个字符不连续,则将 left 更新为 right,表示重新开始考察一个新的连续子字符串。
  4. 移动右边界
    • 无论是否连续,每次循环都将 right 加 1,以继续向右扩展考察。
  5. 返回结果
    • 当 right 遍历完整个字符串后,返回 ans,即最长的字母序连续子字符串的长度。

代码实现:

class Solution:def longestContinuousSubstring(self, s: str) -> int:left, right = 0, 1ans = 1while right < len(s):if ord(s[right]) - ord(s[right - 1]) == 1:ans = max(ans, right - left + 1)else:left = rightright += 1return ans

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com