考虑前缀和,先计算得到整个字符串的元音和辅音数量,然后枚举每一个分割点,维护左边的元音数量和辅音数量,右边的元音和辅音数量可以通过整体的数量减去当前的数量得到,如果左右两边的字符串权值相等就对答案自增即可。
Java
import java.util.*;
小红定义一个字符串的权值是:字符串辅音数量和元音数量的差的绝对值。 例如,“arcaea"的权值是 2,因为有4个元音,2 个辅音权值为∣4−2∣=2.现在小红拿到了一个字符串,她想把这个字符串切成两个非空字符串,需要满足两个字符串的权值相等。小红想知道,有多少种不同的切割方式?我们定义,元音有"aeiou"这五种,其余字母均为辅音,
一个仅包含小写字母的字符串,长度不超过 200000
切割方案数。
输入
arcaea
输出
2