¿Cuál es el enfoque algorítmico para este problema de hackerrank?

Aquí la cadena consta de 0 y 1 solamente.
Si la cadena consta de solo 0s, entonces podemos tomar solo s1 = “0” y s2 como cadena nula.
por lo tanto p1 + p2 = 1.
Si la cadena s consta de solo 1, entonces podemos tomar solo s1 = “1” y s2 cadena asnula.
por lo tanto p1 + p2 = 1.
Si s consta de s1 y s2, uno de ellos debe ser “1” y el otro “0”.
Por lo tanto, p1 + p2 = 2.
La respuesta nunca puede ser mayor que 2 porque de todos modos podemos romper la cadena en dos subcadenas que consisten en “0” y “1”.
Aquí está mi código aceptado

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#incluye
#include
#include
#include
#include
#include
#include
#include

usando el espacio de nombres estándar;
typedef largo largo LL;
typedef par pii;

#definir forup (i, a, b) para (int i = a; i <b; ++ i)
#define fordn (i, a, b) for (int i = a; i> b; –i)
#define rep (i, a) para (int i = 0; i <a; ++ i)

#define dforup (i, a, b) para (i = a; i <b; ++ i)
#define dfordn (i, a, b) para (i = a; i> b; –i)
#define drep (i, a) para (i = 0; i <a; ++ i)

#definir slenn (s, n) para (n = 0; s [n]! = ‘\ 0’; ++ n)

#define gi (x) scanf (“% d”, & x)
#define gl (x) cin >> x
#define gd (x) scanf (“% lf”, & x)
#define gs (x) scanf (“% s”, x)

#define pis (x) printf (“% d”, x)
#definir pin (x) printf (“% d \ n”, x)
#define pls (x) cout << x << ""
#define pln (x) cout << x << "\ n"
#define pds (x) printf (“%. 12f”, x)
#define pdn (x) printf (“%. 12f \ n”, x)
#define pnl () printf (“\ n”)

#define fs primero
#define sc second

#define pb push_back

# define max_int 1000000

int main ()
{
int t;
scanf (“% d”, & t);
mientras que (t–)
{
cuerda s;
cin >> s;
int i, n = s.size (), cnt0 = 0, cnt1 = 0;
para (i = 0; i <n; i ++)
{
if (s [i] == ‘0’) cnt0 ++;
de lo contrario, cnt1 ++;
}
if (cnt0 == 0 && cnt1 == 0) cout << 0 << endl;
si no (cnt0 == 0 || cnt1 == 0) cout << 1 << endl;
sino cout << 2 << endl;
}
devuelve 0;
}

La respuesta es 1 o 2.
Caso 1: S consta de solo 1s o 0s. s1 puede ser 1 o 0 en consecuencia y s2 será nulo
Caso 2: S consiste en una mezcla de 1s y 0s. s1 puede ser 1 y s2 puede ser cero y al intercalarlos podemos hacer cualquier cadena S.

SPOJ.com – Problema IPS