Remove Duplicates

Здравейте.
Доста въртях, суках, да напиша код, който да изпълни условието на задачата, но така и не можах да се справя.
Реално задачата я реших след като прочетох за HashSet, но не е ли идеята да се справим с задачите за упражнение (поне на този етап) без да използваме вградени функции. Ако е да, някой може ли да ми подскаже за алгоритъма…

1 Like

Здравей, пробвай да обиколиш всеки елемент от масива, като събираш числата, които ти трябват в променлива, която накрая принитш, пък повтарящите се ги променяш , за да не ти пречат и с проверка проверяваш това число, на което си, дали си го открил като повтарящо се, или ти трябва и ще го вземаш в променливата извън цикъла. Ако не се разбира това, което ти написах, ще пробвам по-директно да обясня ама така и подсказката е по-голяма :smiley:

Здрасти! Аз също пробвах да я реша с HashSet, но не стана, защото не се запазва оригиналната последователност на елементите, успях да я реша с LinkedHashSet който, чиито свойства са че не запазва повтарящи се елементи, но поддържа оригиналната последователност, обаче не ми я приема системата, въпреки че при тестовете всичко е наред, някой има ли идея защо не я приема? Благодаря! Ето и кодът ми:
import java.util.*;

public class RemoveDuplicates {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] list = sc.next().split(",");

    LinkedHashSet<String> linkedHashSet = new LinkedHashSet<String>(List.of(list));


    String[] array = new String[linkedHashSet.size()];
    linkedHashSet.toArray(array);

    for (int i = 0; i < array.length; i++) {
        if (i > 0) {
            System.out.print(",");
        }
    
        System.out.print(array[i]);
    }

}

}

Задачата се решава с обикновен List. Направете проверка дали даден символ вече го има и ако го няма само тогава да се добави , надявам се да не ви улесних прекалено много

1 Like

@miroslav.ivnv Благодаря много за насоките, това е кодът, който успях да напиша и минава:

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;

public class Duplicates {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String el = sc.nextLine();
String[] elements = el.split(",");

    ArrayList<String> withDuplicates = new ArrayList<>();
    ArrayList<String> withoutDuplicates = new ArrayList<>();
 

    for (int i = 0; i < elements.length; i++) {
        withDuplicates.add ((elements[i]));

  
                if(!withoutDuplicates.contains(withDuplicates.get(i))){
                 withoutDuplicates.add(withDuplicates.get(i));

            } else {
              continue;
            }
        }
    System.out.println(withoutDuplicates.toString().replace("[", "").replace(" ", "").replace("]", ""));

    }

}
1 Like

За какво ти е 2-а List ?
И това else continue е излишно

1 Like