在字符串中找出连续最长的递增英文字母串(26个字母,不区分大小写),如果没有,返回空

解法:滑动窗口

示例 1:
输入:s = "79Efui"
输出:Ef

示例 1:
输入:s = "79Edfui"
输出:空

 

python递增字串 python最长连续递增字符串_滑动窗口

python递增字串 python最长连续递增字符串_不区分大小写_02

def longestStr(s):
    n = len(s)
    l = 0
    r = 0
    start = 0
    maxLen = 0

    while l < n:
        if s[l].isalpha():
            r = l + 1
            #后一个比前一个大1
            while r < n and s[r].isalpha() and ord(s[r].lower())-1 == ord(s[r-1].lower()):
                r += 1
            if r-l > maxLen:
                start = l
                maxLen = r-l
                
            l = r+1
            r = r+1
        else:
            l += 1
    return s[start:start+maxLen]

s1 = 'y7ww3DuEfWre5678y'
s2 = '678j8ui'
s3 = '78'
print(longestStr(s1))
print(longestStr(s2))
print(longestStr(s3))

滑动窗口