Contagem de letra em uma frase

7 respostas
E

Fala Pessoal!!

tô precisando de uma ajudinha!!

Preciso fazer um código que solicite que seja digitada uma frase, depois solicite uma letra e mostre quantas vezes a letra aparece na frase.

Gostaria de saber como eu vou fazer a contagem desta letra na frase digitada.

sei que posso fazer com o pacote java.lang mas não consegui achar nada!!!

Valeu!!

Abs…

e_andrade

7 Respostas

F

tenta isso:

public int contaLetra(String str, char letra){
 int count = 0;
 int x;
 while ((x = str.indexOf(letra + "")) != -1){
  str = str.substring(x + 1);
 }
 return count;
}
J

Uma outra solução:

public static int contaCaractere (String s, char c) {
    int contador = 0;
    char[] palavra = s.toCharArray();
    for (int indice = 0; indice < palavra.length; indice++) {
      contador += (palavra[indice] == c) ? 1 : 0;
    }
    return contador;
  }

:wink:

E

Valeu pela ajuda pessoal!!

Não imaginava que viria tão depressa!!!

abs…

e_andrade

F

“JavaTeco”:
Uma outra solução:

public static int contaCaractere (String s, char c) {
    int contador = 0;
    char[] palavra = s.toCharArray();
    for (int indice = 0; indice < palavra.length; indice++) {
      contador += (palavra[indice] == c) ? 1 : 0;
    }
    return contador;
  }

:wink:

fica mais rapido se vc trocar essa parte:

contador += (palavra[indice] == c) ? 1 : 0;

por isto:

if (palavra[indice] == c) contador++;

pq em ambos esta se fazendo a comparacao, mas no segundo caso vc esta avitando atribuicoes desnecessarias :wink:

J

“Felipe”:
“JavaTeco”:
Uma outra solução:

public static int contaCaractere (String s, char c) {
    int contador = 0;
    char[] palavra = s.toCharArray();
    for (int indice = 0; indice < palavra.length; indice++) {
      contador += (palavra[indice] == c) ? 1 : 0;
    }
    return contador;
  }

:wink:

fica mais rapido se vc trocar essa parte:

contador += (palavra[indice] == c) ? 1 : 0;

por isto:

if (palavra[indice] == c) contador++;

pq em ambos esta se fazendo a comparacao, mas no segundo caso vc esta avitando atribuicoes desnecessarias :wink:

Vc tem razão… fiz na correria… mas então melhorei mais um pouco, e adicionei sua proposta:

public static int contaCaractere (String s, char c) {
    int contador = 0;
    for (int indice = 0; indice < s.length(); indice++) {
        if (s.charAt(indice) == c) contador++;
    }
    return contador;
  }

Assim fica melhor ainda… hehehehehehehhe

F

“JavaTeco”:
“Felipe”:
“JavaTeco”:
Uma outra solução:

public static int contaCaractere (String s, char c) {
    int contador = 0;
    char[] palavra = s.toCharArray();
    for (int indice = 0; indice < palavra.length; indice++) {
      contador += (palavra[indice] == c) ? 1 : 0;
    }
    return contador;
  }

:wink:

fica mais rapido se vc trocar essa parte:

contador += (palavra[indice] == c) ? 1 : 0;

por isto:

if (palavra[indice] == c) contador++;

pq em ambos esta se fazendo a comparacao, mas no segundo caso vc esta avitando atribuicoes desnecessarias :wink:

Vc tem razão… fiz na correria… mas então melhorei mais um pouco, e adicionei sua proposta:

public static int contaCaractere (String s, char c) {
    int contador = 0;
    for (int indice = 0; indice < s.length(); indice++) {
        if (s.charAt(indice) == c) contador++;
    }
    return contador;
  }

Assim fica melhor ainda… hehehehehehehhe

com o array de char fica mais rapido, apesar de gastar um pouco mais de memoria, evita MUITAS chamadas de metodo, teve um prog q eu fiz uma vez, q ele contava qntas linhas tinha um texto (qntos caracteres ‘\n’), dai da primeira vez botei desse jeito… com um arquivo de 13kb, leva um 30 a 40 segundos pra contar as linhas, depois alterei o prog pra como eu postei, pra calcular as linhas do mesmo arquivo de 13kb, foi instantaneo 8O

J

Legal saber disso… Valeu mesmo…

:wink:

Criado 12 de abril de 2004
Ultima resposta 13 de abr. de 2004
Respostas 7
Participantes 3