Lösningsförslag till uppgift 7.15
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);
}
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;
}