Ваш внешний цикл учитывает каждый элемент вашего массива, включая те, которые уже были найдены и напечатаны как дубликаты.Это безопасно, когда есть только две копии, но если найдутся какие-либо дополнительные копии, вы распечатаете дополнительные материалы.
Ваш внутренний цикл печатает каждый дубликат, который он найдет, даже если онуже напечатал номерной знак.Кроме того, ваш внешний цикл не обеспечивает какой-либо специальной обработки для пустых строк, скопированных в массив на более ранних итерациях, поэтому ваша программа склонна сопоставлять их с другими и печатать их (в виде пустых строк).
В целом, существуетЕсть несколько способов решения проблемы.Один из них заключается в том, чтобы отслеживать, какие номера пластин являются дубликатами уже напечатанных - например, с помощью вспомогательного массива, - и прерывать внутренний цикл после обработки одного дублирования.Другим способом было бы изменить массив по мере использования, скажем, установив для dupes пустые строки, а затем игнорируя пустые строки, когда вы позже встретите их снова.Это требует, чтобы вы не выходили из внутреннего цикла раньше, а следили за тем, был ли уже напечатан текущий номерной знак, чтобы избежать его многократной печати.Третье - сначала отсортировать массив, что позволит вам обрабатывать все копии номера пластины как одну группу, поскольку все они будут находиться в смежных позициях массива.