El primer ejecicio:
Código C++:
Ver original#include <iostream>
using namespace std;
string noRep(string cadena)
{
if (cadena.empty() || cadena.size() == 1) return cadena;
else
{
if (cadena[0] == cadena[1])
{
return noRep(cadena.substr(1));
}
else
{
string a = noRep(cadena.substr(1));
a.insert(a.begin(),cadena[0]);
return a;
}
}
}
int main()
{
cout<<noRep("abccccfabaddeff")<<endl;
}
Pero si le añadimos el parámetro indice, es mucho más eficiente (y sencillo):
Código C++:
Ver original#include <iostream>
using namespace std;
string noRep(string cadena,unsigned int indice = 0)
{
if (cadena.empty() || cadena.size() == 1 || indice == cadena.size()-1) return cadena;
else
{
if (cadena[indice] == cadena[indice+1])
{
cadena.erase(indice,1);
return noRep(cadena,indice);
}
else
{
indice++;
return noRep(cadena,indice);
}
}
}
int main()
{
cout<<noRep("abccccfabaddeff")<<endl;
}
En cuanto al segundo, valen que sean repetidos los colmillos?, por ejemplo el número 25 sería vampiro ya que: 5*5