Contar chars repetidos

2 respostas
S

oie… fiz um programinha que percorre a string e incrementa um contador se houver letras rpetidas
porem ele sempre conta uma a mais quando tem mais de duas letras iguais!.. ja mexi no for um monte de vezes e nao dá certo… alguem pode me ajudar

import java.util.*;

public class cinco {
	
	static int repetido (String s)
	{
		int i = 0,j,cont = 0;
		
		char c,d;
		
		
	 for (j = 0; j < s.length(); j++)
	 {
	 	for(i = j + 1 ; i < s.length();i++)
		{
			c = s.charAt(i);
			
			//String.valueOf(c);
			
			d = s.charAt(j);
			
			
			//t = String.valueOf(d);
			
			if (c == d)
				cont++;
		}		
			
			
		}
		return cont;
	}
		public static void main (String args[]){
			
			Scanner leitor = new Scanner(System.in);
			
			String palavra = "";
			
			int vezes;
			
			System.out.printf("Digite uma palavra para a busca:");
			palavra = leitor.nextLine();
			
			vezes = repetido(palavra);
			
			System.out.print(vezes);
		 
		}
		
	 }

2 Respostas

T

O que é uma “letra repetida”?

  • Duas letras consecutivas repetindo-se, por exemplo repetido (“recorrência”) deve retornar o valor “1”, que é correspondente a “rr”
  • Uma letra que se repete na palavra, mas em posições não consecutivas (por exemplo, “repórter” apresenta 3 ocorrências da letra “r” e 2 ocorrências da letra “e”.

Queria saber o que você quer fazer.

P
Meu amigo pelo que entendi vc esta comparando um char com outro e se encontrar conta, porém, qdo vc passa por esse caracter que encontrou volta a contar novamente. ou seja, a palavra "para" só tem uma letra repetida o "a" então vc compara o primeiro "a" com o segundo e ai vai percorrendo os caracteres e qdo chega no segundo vc compara ele com o primeiro e conta novamente. Pelo menos foi o q entendi se não for isso me desculpa. Da uma olhada nesse exemplo que fiz a partir do seu.
import java.util.*;
public class Cinco {
    static int repetido (String s)
    {
        int i = 0, j = 0, cont = 0;
        char c,d;
        char[] letra;
        boolean encontrou = false;
        letra = new char[s.length()];        
        for (j = 0; j < s.length(); j++)
        {
            for(i = j + 1 ; i < s.length();i++)
            {
                c = s.charAt(i);                
                d = s.charAt(j);
                
                for (int l=0; l < s.length(); l++) {
                    if (d==letra[l]) {
                        encontrou=true;                 
                        break;
                    }
                }
                if ((c == d) && !encontrou) {
                    cont++;                                        
                    letra[j] = d;
                }
                encontrou=false;
            }
        }
        return cont;
    }
    public static void main (String args[]){
        Scanner leitor = new Scanner(System.in);
        String palavra = "";
        int vezes;
        System.out.printf("Digite uma palavra para a busca:");
        palavra = leitor.nextLine();
        vezes = repetido(palavra);
        System.out.println(vezes);
    }
}
Criado 26 de março de 2009
Ultima resposta 26 de mar. de 2009
Respostas 2
Participantes 3