Удаляем одинаковые строки

  • 6
  • Недоступна
В этой задаче тебе нужно: 1. Считать 6строк и заполнить ими массив strings. 2. Удалить повторяющиеся строки из массива strings, заменив их на null (null должны быть не строками "null"). Примеры. 1. Массив после чтения строк: {"Hello", "Hello", "World", "Java", "Tasks", "World"} 2. Массив после уд
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (377)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ALEX EY
Уровень 1
6 декабря, 17:46
проверяю в IDE - работает, какие бы строки не вставил, однако ни одно условие проверку не проходит
public static void main(String[] args) {
        //напишите тут ваш код
        Scanner scanner = new Scanner(System.in);
            String[] strings = new String[6];
            for (int i = 0; i < 6; i++)
                strings[i] = scanner.nextLine();
            boolean b = false;
            for (int i = 0; i < 6; i++) {
                if (strings[i] != null)
                    for (int j = 0; j < 6; j++)
                        if (i != j & strings[j] != null & strings[i].equals(strings[j])) {
                            b = true;
                            strings[j] = null;
                        }
                if (b) strings[i] = null;
                b = false;
            }
            for (int i = 0; i < strings.length - 1; i++) {
                System.out.print(strings[i] + ", ");
            }
            System.out.print(strings[strings.length - 1]);
    }
Ra
Уровень 22
Student
28 ноября, 06:51
вот такая загогулина
countedStrings.put(strings[i], countedStrings.getOrDefault(strings[i], 0) + 1);
Денис Глушков
Уровень 6
27 ноября, 12:59
public class Solution { public static String[] strings; public static void main(String[] args) { strings = new String[6]; Scanner input = new Scanner(System.in); for (int i = 0; i < 6; i++) { strings[i] = input.nextLine(); } for (int i = 0; i < 5; i++) { int counter = 0; for (int j = i + 1; j < 6; j++) { if (strings[i] == null || strings[j] == (null)) continue; if (strings[i].equals(strings[j])) { strings[j] = null; counter++; } } if (counter != 0) strings[i] = null; } for (int i = 0; i < strings.length; i++) { if (i != 5) { System.out.print(strings[i] + ", "); } else { System.out.print(strings[i]); } } } }
Anna Sgibneva
Уровень 13
19 ноября, 20:34
не пропускает по второму условию public class Solution { public static String[] strings; public static void main(String[] args) { Scanner sc = new Scanner(System.in); strings = new String[6]; for(int i = 0; i < 6; i++){ strings[i] = sc.nextLine(); } for (int i = 5; i > 0; i--){ for(int b = i; b > 0; b--){ if ((strings[i]!= null) && (strings[i-b] != null) && (strings[i].equals(strings[i-b]))){ strings[i] = null; strings[i-b] = null; } } } for (int i = 0; i < strings.length; i++) { System.out.print(strings[i] + ", "); } } }
Anna Sgibneva
Уровень 13
19 ноября, 21:28
благодаря комментам поняла ошибку. В коде надо учесть то, что повторяющихся строк может быть больше двух. этот код прошел проверку: public class Solution { public static String[] strings; public static void main(String[] args) { Scanner sc = new Scanner(System.in); strings = new String[6]; String a; for(int i = 0; i < strings.length; i++){ strings[i] = sc.nextLine(); } for (int i = 5; i > 0; i--){ if (strings[i] != null){ a = strings[i]; } else continue; for(int b = i-1; b >= 0; b--){ if ((strings[b]!= null) && (strings[b].equals(a))){ strings[b] = null; strings[i] = null; } } } for (int i = 0; i < strings.length; i++) { System.out.print(strings[i] + ", "); } }
Eduard System Engineer
18 ноября, 11:46
Scanner scan = new Scanner(System.in); strings = new String[6]; for (int i = 0; i < strings.length; i++) strings[i] = scan.nextLine(); for (int i = 0; i < strings.length; i++) { String str = strings[i]; for (int x = i+1; x < strings.length; x++) { if(str != null && str.equals(strings[x])) strings[i] = strings[x] = null; } }
Vladmvg
Уровень 11
15 ноября, 17:48
Здравствуйте, может кто подскажет. Все понимаю, но единственное, когда даже правильный вариант вставляю (скопированный с сайта) в IDE, запрашивает на ввод только 4 строки, причем заносит таким образом: strings[0] = word; strings[1] = null; strings[2] = word; strings[3] = null; strings[4] = word; strings[5] = null;
Андрей А
Уровень 6
12 ноября, 21:01
public static void main(String[] args) { Scanner s = new Scanner(System.in); strings = new String[6]; for (int i = 0; i < 6; i++) { strings[i] = s.nextLine(); } for (int i = 0; i < 5; i++) { for (int j = i + 1; j < 6; j++) { if (strings[i] != null & strings[j] != null) { if (strings[i].equals(strings[j])) { strings[i] = null; strings[j] = null; } } } } for (int i = 0; i < strings.length; i++) { System.out.print(strings[i] + ", "); } } } после проверки выдает null, null, null, Java, Tasks, null, и не принимает как правильное решение
Денис Глушков
Уровень 6
27 ноября, 13:05
Андрей, привет! Там при проверке тестовых данных, разумеется, больше чем только в примере. У тебя условие составлено так, что как только будет выявлено совпадение двух строк, то ты сразу обе обнуляешь. Вот для примера прогони свой код с данными ["1", "1", "1", "4", "5","6"] Похоже вернёт [null, null, "1", "4", "5","6"] - даже не было сравнения 1го элемента и 3его, так как ты обнуляешь первый сразу же после сравнения со вторым.
11 ноября, 08:11
public static void main(String[] args) {
    //напишите тут ваш код
    Scanner Sc = new Scanner(System.in);
    strings = new String[6];
    for (int i = 0; i < 6; i++) {
        strings[i] = Sc.nextLine();
            }
    for (int j = 0; j < strings.length; j++) {
        for (int x = j+1; x < strings.length; x++) {
            if (strings[j] != null){
                if (strings[j].equals(strings[x])){
                    strings[x]=null;
                }
            }
        }
    }
    for (int y = 0; y < strings.length; y++) {
        System.out.print(strings[y] + ", ");
    }
}
Не могу понять как удалить строку с КОТОРОЙ СРАВНИВАЮТ.
Денис Глушков
Уровень 6
27 ноября, 13:07
Я через отдельный счетчик совпадений в рамках главного цикла делал public class Solution { public static String[] strings; public static void main(String[] args) { strings = new String[6]; Scanner input = new Scanner(System.in); for (int i = 0; i < 6; i++) { strings[i] = input.nextLine(); } for (int i = 0; i < 5; i++) { int counter = 0; 👈 for (int j = i + 1; j < 6; j++) { if (strings[i] == null || strings[j] == (null)) continue; if (strings[i].equals(strings[j])) { strings[j] = null; counter++; 👈 } } if (counter != 0) 👈 strings[i] = null; 👈 } for (int i = 0; i < strings.length; i++) { if (i != 5) { System.out.print(strings[i] + ", "); } else { System.out.print(strings[i]); } } } }
Anonymous #3170003
Уровень 15
8 ноября, 22:20
public class Solution {
    public static String[] strings;

    public static void main(String[] args) {
        strings =new String[6];
        Scanner keyboard = new Scanner(System.in);
        for(int i=0;i<6;i++){
            strings[i]=keyboard.nextLine();
        }
        for(int a=0;a< strings.length;a++){
            String currentString=strings[a];
            for(int j=a+1;a<strings.length;j++){
                if(null == currentString){
                    break;
                }
            if(currentString.equals(strings[j])){
                strings[a]=null;
                strings[j]=null;
            }
            }
        }
        for (int i = 0; i < strings.length; i++) {
            System.out.print(strings[i] + ", ");
        }
    }
}
не проходит проверку по двум условиям почему так ? сравнение переменых как в правильном ответе но выбивает ошибку
Anonymous #3170003
Уровень 15
8 ноября, 22:33
отлично просто клас стоило преименовать переменную а в i ,и все чудесным образом заработало
Денис
Уровень 8
7 ноября, 11:58
не смог даже разобраться как это работает, решение сделал из примеров других людей, а сам не смог разобраться
Денис
Уровень 8
7 ноября, 11:59
Задачи совсем не понятные
Ra
Уровень 22
Student
28 ноября, 06:56
Самый эффективный вариант в один проход - посчитать, сколько раз встречается строка, но тут надо знать HashMap, которая будет позже. И если строка встречается > 1 раза, сделать её null