none
Saber se há pares iguais RRS feed

  • Pergunta

  • Em um array, como eu faço para saber se há dois valores iguais? tipo
    {1,3,2,1,5} ==> Eu tenho um par
    {1,3,3,2,5,2} ==> Eu tenho 2 pares

    {A,B,A,C,B] ==> Eu tenho 2 pares

    e assim secessivamente

    segunda-feira, 12 de novembro de 2012 18:39

Todas as Respostas

  • Você pode usar do extension method GroupBy e agrupar pelo objeto (no caso o int), depois apenas selecionar aqueles que a contagem do agrupamento seja maior que 1. E como o resultado do dois são iguais, basta selecionar apenas o primeiro, veja:

    int[] x = { 1, 3, 3, 2, 5, 2 };
    
    IEnumerable<int> duplicados = x.GroupBy(f => f).Where(f => f.Count() > 1).Select(f=> f.First());


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    segunda-feira, 12 de novembro de 2012 18:59
  • Valeu, funcionou. Eu fiz isso, baseado no seu exemplo:

    private void compara()
            {
                string s = "";
                int[] x = { 1, 3, 3, 2, 5, 2 };
                int[] d = new int[x.Length];
              
                IEnumerable<int> duplicados = x.GroupBy(f => f).Where(f => f.Count() > 1).Select(f => f.First());

                d = duplicados.ToArray();

                foreach (var dup in d)
                {
                    s += int.Parse(dup.ToString()) + "-";
                }

                MessageBox.Show(s).ToString();
            }

    segunda-feira, 12 de novembro de 2012 23:35
  • Pnet,

    Você pode usar do método Join() contido na classe String para inserir os "-" na sua string, bastar passar o array de string, veja:

    private void compara()
    {
        int[] numeros = { 1, 3, 3, 2, 5, 2 };
    
        int[] duplicados = numeros.GroupBy(f => f).Where(f => f.Count() > 1).Select(f => f.First()).ToArray();
    
        if (duplicados.Length > 0)
            MessageBox.Show(String.Join("-", duplicados));
    
        
    }

    Documentação:
    http://msdn.microsoft.com/en-us/library/57a79xd0.aspx

    Fica a dica :)

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Sugerido como Resposta Vitor Mendes quinta-feira, 13 de dezembro de 2012 18:51
    segunda-feira, 12 de novembro de 2012 23:43