当前位置:   article > 正文

【华为OD机试】求满足条件的最长子串的长度(C++ Python Java)2023 B卷_华为机考求满足条件的最长子串的长度

华为机考求满足条件的最长子串的长度

题目描述

给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度,

字符串本身是其最长的子串,子串要求:

1、 只包含1个字母(a~z, A~Z),其余必须是数字;

2、 字母可以在子串中的任意位置;

如果找不到满足要求的子串,如全是字母或全是数字,则返回-1。

输入描述

字符串(只包含字母和数字)

输出描述

子串的长度

用例1

输入

abC124ACb

输出

4

说明

满足条件的最长子串是C124或者124A,长度都是4

用例2

输入

a5

输出

2

解题思路

1.用滑动窗口法,设置左右指针,右指针一直往右移动,满足只要一个字母要求时

求最大长度

2.窗口含有字母大于1时,右移动左指针,直到含义字母为1

考点

滑动窗口

代码

  1. str=input()
  2. n=len(str)
  3. left=0
  4. res=0
  5. cnt=0 # 字母的个数
  6. for i in range(n):
  7. if str[i].isalpha():
  8. cnt+=1
  9. if cnt==1:
  10. res=max(res,i-left+1)
  11. if cnt>1:
  12. while not str[left].isalpha():
  13. left+=1
  14. left+=1
  15. cnt-=1
  16. print(res)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/786575
推荐阅读
相关标签
  

闽ICP备14008679号