首页 > 试题广场 >

偏爱字母

[编程题]偏爱字母
  • 热度指数:3789 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

小美喜欢字母E,讨厌字母F。在小美生日时,小团送了小美一个仅包含字母EF的字符串,小美想从中选出一个包含字母E数量与字母F数量之差最大的子串。

*子串:从字符串前面连续删去若干个字符,从后面连续删去若干个字符剩下的字符串(也可以一个都不删),例如abcabfabcab的子串,而不是abcad的子串。我们将空串看作所有字符串的子串。


输入描述:

第一行一个正整数n表示字符串的长度。

第二行长度为n,且仅包含大写字母’E’,’F’的字符串(不含引号)

 



输出描述:

输出一个整数,表示最大的差值

示例1

输入

5
EFEEF

输出

2

说明

选择子串EE,此时有2个E,0个F,有最大差值2-0=2

另外,选择子串EFEE也可以达到最大差值。


备注:

对于30%的数据,n<=300

对于60%的数据,n<=3000

对于100%的数据,n<=300000

n=int(input())
L=input()
count=0
res=0
for i,num in enumerate(L):
    count+=1 if num=="E" else -1
    if count<0:count=0
    res=max(res,count)
print(res)
#简短的python解法
发表于 2021-04-03 17:13:01 回复(0)
import sys 
a=[]
for line in sys.stdin:
    a.append(list(map(str,line.split())))
r=int(a[0][0])
l,b=0,0
for i in range(r):
    if a[1][0][i]=='E':
        l+=1
    if a[1][0][i]=='F':
        l-=1
    if l<=0:
        l=0
    b=max(l,b)
    
    
print(b)

菜狗的python 解法
编辑于 2021-03-12 10:23:56 回复(0)