以下是 Java 代码实现:

public static int maxInsertA(String S) {
    int countA = 0;
    int maxCountA = 0;
    boolean hasAAA = false;
    for (int i = 0; i < S.length(); i++) {
        char c = S.charAt(i);
        if (c == 'a') {
            countA++;
            if (i >= 2 && S.charAt(i-1) == 'a' && S.charAt(i-2) == 'a') {
                hasAAA = true;
                break;
            }
        } else {
            maxCountA += (countA - 1) / 2;
            countA = 0;
        }
    }
    if (countA > 0) {
        maxCountA += (countA - 1) / 2;
    }
    return hasAAA ? -1 : maxCountA;
}

首先,我们定义了三个变量:countA 表示当前连续出现的字符'a'的数量,maxCountA 表示可以插入的'a'的最大数量,hasAAA 表示字符串S是否包含子字符串'aaa'。

然后,我们遍历字符串S中的每个字符。如果当前字符是'a',则将countA加1,并判断前两个字符是否也是'a',如果是,则说明S包含子字符串'aaa',将hasAAA设为true并退出循环。如果当前字符不是'a',则将可以插入的'a'的数量加到maxCountA中,然后将countA重置为0。

最后,如果循环结束后countA不为0,则将剩余的'a'数量加到maxCountA中。

最终,如果hasAAA为true,则返回-1,否则返回maxCountA

Java 字符串插入 'a' 的最大数量 - 避免连续三个 'a'

原文地址: https://www.cveoy.top/t/topic/mNtj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录