AP Computer Science A 2014 Pregunta de respuesta libre - scrambleWord
Problem
1. Esta pregunta implica razonar sobre cadenas formadas por letras mayúsculas. Implementará dos métodos relacionados que aparecen en la misma clase (no se muestra). El primer método toma un único parámetro de cadena y devuelve una versión codificada de esa cadena. El segundo método toma una lista de cadenas y modifica la lista codificando cada entrada en la lista. Cualquier entrada que no se pueda codificar se elimina de la lista.
a) Escriba el método scrambleWord, que toma una palabra dada y devuelve una cadena que contiene una versión codificada de la palabra de acuerdo con las siguientes reglas.
- El proceso de codificación comienza en la primera letra de la palabra y continúa de izquierda a derecha.
- Si dos letras consecutivas consisten en una "A" seguido de una letra que no es una "A", luego las dos letras se intercambian en la cadena resultante.
- Una vez que se han intercambiado las letras en dos posiciones adyacentes, ninguna de esas dos posiciones puede estar involucrada en un intercambio futuro.
La siguiente tabla muestra varios ejemplos de palabras y sus versiones codificadas.
palabra |
Resultado devuelto por scrambleWord(palabra) |
"TAN" |
"TNA" |
"ABRACADABRA" |
"BARCADABARA" |
"GUAU" |
"GUAU" |
"AARDVARK" |
"ARADVRAK" |
"HUEVOS" |
"HUEVOS" |
"A" |
"A" |
"" |
"" |
Método completo scrambleWord a continuación.
/** Codifica una palabra dada.
* @param word la palabra que se codificará
* @return la palabra codificada (posiblemente igual a la palabra)
* Precondición: la palabra es una cadena vacía o contiene solo letras mayúsculas.
* Poscondición: la cadena devuelta se creó a partir de word de la siguiente manera:
* - la palabra estaba codificada, comenzando en la primera letra y continuando de izquierda a derecha
* - dos letras consecutivas que consisten en "A" seguido de una letra que no era "A" fueron intercambiados
* - las letras se intercambiaron como máximo una vez
*/
public static String scrambleWord(String palabra)
b) Escriba el método scrambleOrRemove, que reemplaza cada palabra en el parámetro wordList con su versión codificada y elimina cualquier palabra que no haya cambiado después de codificar. El orden relativo de las entradas en wordList sigue siendo el mismo que antes de la llamada a scrambleOrRemove.
El siguiente ejemplo muestra cómo se modificaría el contenido de wordList como resultado de llamar a scrambleOrRemove.
Antes de la llamada a scrambleOrRemove:
lista de palabras
0 |
1 |
2 |
3 |
4 |
"TAN" |
"ABRACADABRA" |
"GUAU" |
"MANZANA" |
"HUEVOS" |
Después de la llamada a scrambleOrRemove:
lista de palabras
0 |
1 |
2 |
"TAN" |
"BARCADÁBARA" |
"PAPEL" |