PHP :: Aufgabe #323

1 Lösung Lösung öffentlich

Duplikate bis auf Dopplungen aus Liste entfernen

Anfänger - PHP von JKooP - 21.02.2021 um 11:24 Uhr
Gegeben ist eine sortierte Liste, welche alle gängigen Datentypen aufnehmen kann.
Dabei sind alle Werte des gleichen Typs. Statt der Liste können auch Arrays genutzt werden.

Beispiele:
List<int> {1, 1, 1, 2, 2, 3}
List<char> {‘a’, ‘a’, ‘b’, ‘c’, ‘c’, ‘c’}

Aus dieser Liste sollen jetzt alle Duplikate entfernt werden, wobei hier jeder Wert 2-mal vorkommen darf.

Lösung:
List<int> {1, 1, 2, 2, 3}
List<char> {‘a’, ‘a’, ‘b’, ‘c’, ‘c’}

Schreibe eine Methode/Funktion, die eine Liste/Array aufnimmt, die Duplikate entfernt
und diese dann wieder als Rückgabewert oder Referenz zurückgibt.

Viel Spaß

Lösungen:

vote_ok
von Exception (6910 Punkte) - 20.03.2021 um 20:50 Uhr
Quellcode ausblenden PHP-Code
<?php

$values = [ 1, 1, 1, 2, 2, 3 ];
removeDuplicates($values);
var_dump(implode(', ', $values));

$values = [ 'a', 'a', 'b', 'c', 'c', 'c' ];
removeDuplicates($values);
var_dump(implode(', ', $values));

function removeDuplicates(&$values, int $allowedDuplicates = 2): void {
    $valueCount = array_count_values($values);

    foreach ($valueCount as $value => $count) {
        if ($count > $allowedDuplicates) {
            $key = array_search($value, $values);
            unset($values[$key]);
        }
    }
}


Konsolenausgabe:

php 323.php
string(13) "1, 1, 2, 2, 3"
string(13) "a, a, b, c, c"