Pregunta 1: Ingrese una cadena de letras minúsculas (a~z) a través del teclado.
Escriba un programa de filtrado de cadenas. Si aparecen varios caracteres idénticos en la cadena, se filtrarán los caracteres que no aparecen por primera vez.
Por ejemplo, el resultado del filtro de la cadena "abacacde" es "abcde".
Requerido para implementar funciones:
Copie el código de código de la siguiente manera:
void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);
[Entrada] pInputStr: cadena de entrada
lInputLen: longitud de la cadena de entrada
[Salida] pOutputStr: cadena de salida, el espacio se ha abierto y tiene la misma longitud que la cadena de entrada;
[Nota] Solo necesita completar el algoritmo de función y no hay necesidad de ninguna entrada y salida IO en el medio.
Ejemplo
Entrada: "deefd" Salida: "def"
Entrada: "afafafaf" Salida: "af"
Entrada: "pppppppp" Salida: "p"
La función principal ha sido ocultada. Esta es una entrada de prueba reservada para los usuarios. Puede probar su función de implementación aquí y llamar a printf para imprimir la salida.
Actualmente, puede utilizar otros métodos para realizar pruebas. Siempre que se asegure de que el programa final se pueda ejecutar correctamente, la implementación de la función se puede modificar a voluntad.
Pero no cambie el prototipo de función. Asegúrese de asegurarse de que la compilación y el funcionamiento no se vean afectados.
Pregunta 2: Descripción de la pregunta:
Ingrese una cadena de letras minúsculas (a~z) a través del teclado. Escriba un programa de compresión de cadenas para comprimir las letras repetidas consecutivas en la cadena y generar la cadena comprimida.
Reglas de compresión:
1. Comprima únicamente caracteres recurrentes consecutivamente. Por ejemplo, dado que la cadena "abcbc" no tiene caracteres repetidos consecutivos, la cadena comprimida sigue siendo "abcbc".
2. El formato del campo comprimido es "número de repeticiones de caracteres + caracteres". Por ejemplo: la cadena "xxxyyyyyyz" se convierte en "3x6yz" después de la compresión
Requerido para implementar funciones:
Copie el código de código de la siguiente manera:
void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);
[Entrada] pInputStr: cadena de entrada
lInputLen: longitud de la cadena de entrada
[Salida] pOutputStr: cadena de salida, el espacio se ha abierto y tiene la misma longitud que la cadena de entrada;
[Nota] Solo necesita completar el algoritmo de función y no hay necesidad de ninguna entrada y salida IO en el medio.
Ejemplo
Entrada: "cccddecc" Salida: "3c2de2c"
Entrada: "adef" Salida: "adef"
Entrada: "pppppppp" Salida: "8p"
Copie el código de código de la siguiente manera:
Prueba de clase pública {
static void stringFilter( char InputStr[], long len, char OutputStr[]){
int[] a= nuevo int[26];
int número=0;
int j=0;//OutputStr[] recuento
para(int i=0;i<len;i++){
número = InputStr[i]-'a';
if(a[num]==0){//No apareció
SalidaStr[j]=EntradaStr[i];
j++;
a[núm]=1;
}
}
}
stringZip vacío estático (char InputStr[], longitud larga, char OutputStr[]){
temperatura de carbón =' ';
número int=1;
punto int=0;
para(int i=0;i<len;i++){
si(InputStr[i]==temp){
número++;
}demás{
si(núm!=1){
OutputStr[punto++]=(char)(num+'0');
número=1;
}
OutputStr[punto++]=temp;
temperatura=InputStr[i];
}
}
}
público estático vacío principal (String [] argumentos) {
// TODO Código auxiliar de método generado automáticamente
char [] prueba={'a','a','a','c','b','b','b','a','a','c','a', 'd','d','d','c','d','e'};
long len=prueba.longitud;
char [] res = nuevo char[(int) len];
stringFilter(prueba,len,res);
int j=res.longitud;
para(int i=0;i<j;i++){
si(res[i]!='/0'){
System.out.print(res[i]);
}demás
romper;
}
char[] res2=nuevo char[(int) (2*len)];
stringZip(prueba,len,res2);
for(int i=0;i<2*len;i++){
si(res2[i]!='/0'){
System.out.print(res2[i]);
}demás
romper;
}
}
}