Pergunta 1: Insira uma sequência de letras minúsculas (a~z) por meio do teclado.
Por favor, escreva um programa de filtragem de strings. Se vários caracteres idênticos aparecerem na string, os caracteres que não aparecem pela primeira vez serão filtrados.
Por exemplo, o resultado do filtro da string "abacacde" é "abcde".
Necessário para implementar funções:
Copie o código do código da seguinte forma:
void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);
[Entrada] pInputStr: string de entrada
lInputLen: comprimento da string de entrada
[Saída] pOutputStr: String de saída, o espaço foi aberto e tem o mesmo comprimento da string de entrada;
[Nota] Você só precisa completar o algoritmo da função e não há necessidade de nenhuma entrada e saída IO no meio.
Exemplo
Entrada: "deefd" Saída: "def"
Entrada: "afafafaf" Saída: "af"
Entrada: "pppppppp" Saída: "p"
A função principal foi ocultada. Esta é uma entrada de teste reservada para usuários. Você pode testar sua função de implementação aqui e chamar printf para imprimir a saída.
Atualmente você pode usar outros métodos para testar, desde que garanta que o programa final possa ser executado corretamente, a implementação da função pode ser modificada à vontade.
Mas não altere o protótipo da função. Certifique-se de garantir que a compilação e a operação não sejam afetadas.
Pergunta 2: Descrição da pergunta:
Insira uma sequência de letras minúsculas (a~z) através do teclado. Escreva um programa de compactação de string para compactar as letras repetidas consecutivas na string e gerar a string compactada.
Regras de compressão:
1. Compacte apenas caracteres recorrentes consecutivamente. Por exemplo, como a string "abcbc" não possui caracteres repetidos consecutivos, a string compactada ainda é "abcbc".
2. O formato do campo compactado é “número de repetições de caracteres + caracteres”. Por exemplo: a string "xxxyyyyyyz" se torna "3x6yz" após a compactação
Necessário para implementar funções:
Copie o código do código da seguinte forma:
void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);
[Entrada] pInputStr: string de entrada
lInputLen: comprimento da string de entrada
[Saída] pOutputStr: String de saída, o espaço foi aberto e tem o mesmo comprimento da string de entrada;
[Nota] Você só precisa completar o algoritmo da função e não há necessidade de nenhuma entrada e saída IO no meio.
Exemplo
Entrada: "cccddecc" Saída: "3c2de2c"
Entrada: "adef" Saída: "adef"
Entrada: "pppppppp" Saída: "8p"
Copie o código do código da seguinte forma:
teste de classe pública {
static void stringFilter( char InputStr[], comprimento longo, char OutputStr[]){
int[] a= novo int[26];
int num=0;
int j=0;//OutputStr[] contagem
for(int i=0;i<len;i++){
num = InputStr[i]-'a';
if(a[num]==0){//Não apareceu
OutputStr[j]=InputStr[i];
j++;
a[núm]=1;
}
}
}
static void stringZip( char InputStr[], comprimento longo, char OutputStr[]){
char temp=' ';
int num=1;
int ponto=0;
for(int i=0;i<len;i++){
if(InputStr[i]==temp){
num++;
}outro{
se(num!=1){
OutputStr[ponto++]=(char)(num+'0');
num=1;
}
OutputStr[ponto++]=temp;
temp=InputStr[i];
}
}
}
public static void main(String[] args) {
// TODO stub de método gerado automaticamente
char [] teste={'a','a','a','c','b','b','b','a','a','c','a', 'd','d','d','c','d','e'};
comprimento longo = teste.comprimento;
char [] res = novo char[(int) len];
stringFilter(teste,len,res);
int j=res.comprimento;
for(int i=0;i<j;i++){
if(res[i]!='/0'){
System.out.print(res[i]);
}outro
quebrar;
}
char[] res2=new char[(int) (2*len)];
stringZip(teste,len,res2);
for(int i=0;i<2*len;i++){
if(res2[i]!='/0'){
System.out.print(res2[i]);
}outro
quebrar;
}
}
}