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 (7090 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"

1800863

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.