Gå till innehållet

Lösningsförslag till uppgift 7.21

using System;

namespace Uppgift_7._21
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] lista1 = { "a", "b", "b", "c", "hej" };
            string[] lista2 = { "hej", "a", "a", "b", "programmering" };

            string[] båda = FinnsIBåda(lista1, lista2);

            foreach (string item in båda)
            {
                Console.WriteLine(item);
            }

        }

        static string[] FinnsIBåda(string[] lista1, string[] lista2)
        {
            // Ta reda på hur många strängar som finns i båda så att vi vet hur stor den returnerade listan ska vara
            // Spara alla kopior i en temporär array. Det kan maximalt finnas lika många "dubletter" som längen av lista1
            int antalIBåda = 0;
            string[] tempLista = new string[lista1.Length];

            for (int i = 0; i < lista1.Length; i++)
            {
                // Är det första gången strängen undersöks?
                bool strängenFinnsTidigare = false;
                for (int j = 0; j < i; j++)
                {
                    if (lista1[i] == lista1[j])
                    {
                        strängenFinnsTidigare = true;
                    }
                }

                if (strängenFinnsTidigare)
                {
                    continue;
                }

                // Finns strängen i den andra arrayen?
                for (int j = 0; j < lista2.Length; j++)
                {
                    if (lista1[i] == lista2[j])
                    {
                        tempLista[antalIBåda] = lista1[i];
                        antalIBåda++;
                        break;
                    }
                }
            }

            // Kopiera över alla strängar från templistan till en ny lista som har rätt längd (inte är för lång)
            string[] bådaLista = new string[antalIBåda];

            for (int i = 0; i < antalIBåda; i++)
            {
                bådaLista[i] = tempLista[i];
            }

            return bådaLista;

        }
    }
}

Kommentarer