小熊有一个由小写英文字母组成的字符串s = s1s2...sn。小熊想要计算s中有多少子串包含字符串“bear”,也就是找出满足字符串x(i, j)= sisi+1…sj 包含至少一个字符串“bear”的 (i, j)对数(1≤i≤j≤n)。
字符串x(i,j)包含字符串“bear”定义为存在一个整数k(i≤k≤j-3),满足sk=b,sk+1=e,sk+2=a,sk+3=r。
请帮助小熊解决这个问题。
分析:水题==(数据太小,直接暴力)
var
i,ans,j:longint;
s1:string;
s:ansistring;
begin
assign(input,'string.in');reset(input);
assign(output,'string.out');rewrite(output);
readln(s);
for i:=1 to length(s)-3 do
begin
s1:='';
for j:=i to i+3 do
s1:=s1+s[j];
if s1='bear' then
ans:=ans+(i*(length(s)-i-2));
end;
writeln(ans);
close(input);close(output);
end.

1万+

被折叠的 条评论
为什么被折叠?



