建立网站的准备工作,设计师培训多少,网页设计公司哪里会需要翻译,成都知名网站建设题目描述#xff1a;
字母序连续字符串 是由字母表中连续字母组成的字符串。换句话说#xff0c;字符串 abcdefghijklmnopqrstuvwxyz 的任意子字符串都是 字母序连续字符串 。
例如#xff0c;abc 是一个字母序连续字符串#xff0c;而 ac… 题目描述
字母序连续字符串 是由字母表中连续字母组成的字符串。换句话说字符串 abcdefghijklmnopqrstuvwxyz 的任意子字符串都是 字母序连续字符串 。
例如abc 是一个字母序连续字符串而 acb 和 za 不是。
给你一个仅由小写英文字母组成的字符串 s 返回其 最长 的 字母序连续子字符串 的长度。
代码思路
初始化变量 left 和 right这两个变量分别表示当前考察的连续子字符串的左右边界。初始时left 设为 0right 设为 1表示从字符串的第二个字符开始向右扩展考察。ans用来记录目前找到的最长的字母序连续子字符串的长度。初始时由于每个字符自身都可以看作是一个长度为 1 的连续子字符串所以 ans 设为 1。 遍历字符串 使用一个 while 循环遍历字符串直到 right 达到字符串的长度。在循环内部首先检查当前字符 s[right] 和前一个字符 s[right - 1] 是否是连续的即 ord(s[right]) - ord(s[right - 1]) 1。这里 ord() 函数用于获取字符的 ASCII 值。 更新最长长度 如果当前字符和前一个字符是连续的则更新 ans 为当前考察的子字符串长度right - left 1和之前记录的最长长度 ans 中的较大值。如果当前字符和前一个字符不连续则将 left 更新为 right表示重新开始考察一个新的连续子字符串。 移动右边界 无论是否连续每次循环都将 right 加 1以继续向右扩展考察。 返回结果 当 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