有效传输段需要满足:
limit;在物理层或数据链路层进行通信时,接收到的数据通常表现为一串连续的字节流。协议会利用特定字符标记一段数据的边界,从而使接收端能够从连续的数据中确定真正需要处理的传输内容。但由于信道可能受到干扰,实际收到的数据流中也可能混入噪声字符,因此并非任意一段数据都可以直接用于后续校验。
在某种通信协议中,大写字母(A-Z)承担同步字符的作用,用来标识传输段的起止位置;小写字母(a-z)表示信道产生的干扰字符。除小写字母之外,其余字符均视为有效字符。
接收端需要在整个数据流中寻找连续的有效传输段。一个能够被识别的传输段必须由同步字符作为首字符和尾字符,并且除两端的同步字符之外先出现有效字符。在确定这样的传输段后,只统计其首尾之间出现的小写字母数量,并将这个数量作为该传输段的干扰度。
现在给定目标干扰度 limit 和接收到的数据流字符串 stream。请在 stream 中寻找所有干扰度恰好为 limit 的有效传输段,并求其中长度最大的一个。
如果存在满足条件的有效传输段,输出其长度;如果整个数据流中不存在符合要求的传输段,则输出 (0)。
第一行输入一个整数 limit,表示目标干扰度。
第二行输入一个字符串 stream,表示接收端收到的原始数据流。
输出一个整数,表示干扰度恰好等于 limit 的最长有效传输段的长度;如果不存在这样的有效传输段,则输出 0。
输入
1
A1bC2D
输出
6
说明
原始流中大写字母为 A、C、D。有效传输段必须首尾都是大写字母,b 是小写干扰字符,数字 1、2 既不是同步字符也不是干扰字符。
从 A 到 D 的连续片段中只包含 b 这 1 个小写字母,干扰度为 1,与目标干扰度 1 相等,长度是 6。从 A 到 C 的片段干扰度也为 1,但长度只有 4,因此最长长度为 6。
输入
0
Z
输出
1
说明
目标干扰度为 0。Z 是同步字符,首尾位置可以相同,因此单独一个 Z 构成有效传输段,干扰度为 0,长度为 1。
没有更长的有效传输段,所以输出 1。
输入
2
aBcD
输出
0
说明
目标干扰度为 2。有效传输段首尾必须是大写字母。
候选段 B 到 B 的干扰度为 0,D 到 D 的干扰度为 0,B 到 D 的片段中干扰字符只有 c,干扰度为 1。没有任何有效传输段的干扰度恰好为 2,因此输出 0。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册