题解
题目描述
给定一个环形字符串,找出其中满足字符 'l'、'o'、'x' 出现次数均为偶数的最长子字符串的长度。
思路
- 前缀和与状态压缩:使用前缀和数组记录每个位置的状态,状态由三位二进制数表示,分别对应 'l'、'o'、'x' 出现次数的奇偶性。
- 线性情况处理:遍历字符串,维护哈希表记录每个状态的最早出现位置,计算最长有效子串长度。
- 环形情况处理:考虑环形子串的情况,维护哈希表记录每个状态的最大出现位置,计算可能的环形子串长度。
P3185.最长子字符串的长度(二)(200分)
题目内容
给你一个字符串 s,字符串 s 首尾相连成一个环形,请你在环中找出 'l'、'o'、'x' 字符都恰好出现了偶数次最长子字符串的长度。
输入描述
输入是一串小写的字母组成的字符串
输出描述
输出是一个整数
备注
样例1
输入
alolobo
输出
6
说明
最长子字符串之一是 "alolob",它包含 'l','o' 各2个,以及 0 个 'x'。
样例2
输入
looxdolx
输出
7
说明
最长的子字符串是"oxdolxl",由于是首尾连接在一起的,所以最后一个 'x' 和开头的 'l' 是连接在一起的,此字符串包含 2 个 'l',2个'o',2个'x'
样例3
输入
bcbcbc
输出
6
说明
这个示例中,字符串 "bcbcbc" 本身就是最长的,因为 'l'、'o'、'x' 都出现了 0 次。