PTA 6 volteado (STL string.replace)

L1-058 6 volteados (15 puntos)

666.JPG

"666" es un término de Internet, que probablemente significa que alguien es genial y lo admiramos. Recientemente, se derivó otro número "9", que significa "6 entregado", que es demasiado poderoso. Si cree que este es el nivel más alto de grandeza, está equivocado: el nivel más alto actual es el número "27" ¡porque son 3 "9"!

Esta pregunta le pide que escriba un programa para traducir esas oraciones obsoletas que solo usan una serie de "6666 …… 6" para expresar admiración en las últimas expresiones avanzadas.

Formato de entrada:

La entrada da una oración en una línea, es decir, una cadena no vacía que consta de no más de 1000 letras, números y espacios en inglés, y termina con un retorno de carro.

Formato de salida:

Escanee la oración de entrada de izquierda a derecha: si hay más de 3 6 consecutivos en la oración, reemplace los 6 6 consecutivos con 9; pero si hay más de 9 6 consecutivos, reemplace los 6 6 consecutivos con 27. Otros contenidos no se ven afectados y se emiten tal cual.

Muestra de entrada:

es tan 666 realmente 6666 que mas puedo decir 6666666666

Salida de muestra: 

es tan 666 realmente 9 que mas puedo decir 27

Código: 

#include <bits/stdc++.h>
using namespace std;
int main()
{
	string str;
	getline(cin, str);
	for (int i = 0; i<str.length(); i++){
		if (str[i] == '6'){
			int j = 1;
			for (; i + j<str.length() && str[i + j] == '6'; j++);
			if (j>9)str.replace(i, j, "27");//i为开始位置,j为替换长度
			else if (j>3)str.replace(i, j, "9");
		}
	}
	cout << str << endl;
	return 0;
}

 

Supongo que te gusta

Origin blog.csdn.net/qq_43700916/article/details/88925974
Recomendado
Clasificación