Encuentra la Cadena Original I

Alice está intentando escribir una cadena concreta en su computadora. Sin embargo, ella tiende a ser torpe y puede pulsar una tecla durante demasiado tiempo, lo que provoca que un caracter se escriba varias veces. Aunque Alice intenta concentrarse en su mecanografía, es consiente que puede aún haberse equivocado como mucho una vez. Se te proporciona la cadena `word`, la cual representa el resultado final que se muestra en la pantalla de Alice. Retorna el número total de posibles cadenas originales que Alice pudo haber intentado escribir.

Ejemplo 1:

Entrada:

word = "abbcccc"

Salida:

5
Explicación:

Las cadenas posibles son: "abbcccc", "abbccc", "abbcc", "abbc", and "abcccc".

Ejemplo 2:

Entrada:

word = "abcd"

Salida:

1
Explicación:

La única cadena posible es "abcd".

Ejemplo 3:

Entrada:

word = "aaaa"

Salida:

4

Condiciones:

  • 1 <= word.length <= 100
  • word consiste de solo letras minúsculas del alfabeto en inglés.

Solución

#include<iostream>
#include<string>
#include<map>
#include<cassert>

using namespace std;

class Solution {
public:
    int possibleStringCount(string word) {
        int answer = 1;
        for (size_t i = 1; i < word.length(); i++) {
            if (word[i - 1] == word[i]) {
                answer++;
            }
        }
        return answer;
    }
};

int main() {
    map<string, int> cases = {
        {"abbcccc", 5},
        {"abcd", 1},
        {"aaaa", 4},
    };
    Solution sol = Solution();
    int test = 1;
    for (const auto& ci : cases) {
        int got = sol.possibleStringCount(ci.first);
        assert((got == ci.second and printf("Test %d: OK\n", test))
                or printf("Test %d: WA\n", test));
        test++;
    }
    return EXIT_SUCCESS;
}

slackmart blog © 2025