给定只含小写字母的字符串 s(长度为 n),定义“中心字母”为:将字符按字典序(从小到大)排序后,取第 ceil(n/2) 个字符(从 1 开始计数)。
直接排序可做,但更高效的方法是利用字母表只有 26 个字符这一事实,使用计数排序(桶计数):
cnt[0..25]。k = (n + 1) // 2(即 ceil(n/2))。a 到 z 依次累加出现次数,第一次使前缀和 >= k 的字母即为答案。给定一个长度为 n 的小写字母序列 s。将该序列中所有字母按照字母表顺序(即 'a' 最小,'z' 最大)从小到大排序,得到有序序列。定义该序列的“中心字母”为排序后第 ⌈2n⌉ 个位置上的字母(位置从 1 开始计数)。请找出给定序列的中心字母。
序列长度 n 满足 1≤n≤2×105,并且序列仅由小写字母组成。
第一行包含一个整数 n (1≤n≤2×105),表示序列长度。 第二行包含一个长度为 n 的字符串,仅由小写字母组成。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册