2015-01-28 3 views
-3

Допустим, у нас есть этот массив: String[] arr1 = {"a", "b", "c", "a"};Ищите повторяющиеся значения в String [], не используя Sets, Lists, ArrayLists?

То, что я пытаюсь сделать, это удалить дубликаты строки (в данном случае "a") и добавить его значение в другую строку [] называемых дублей. Когда дубликат добавляется в массив «duplicates», количество раз, которое оно произошло неправильно в массиве arr1, конкатенируется рядом с ним. (recurredValue + amount), поэтому в этом примере это будет a 1. Я искал это раньше, и все они включали использование списков, ArrayLists или Sets. Пожалуйста, не используйте ни один из них.

+0

Что случилось с использованием коллекции? – Bohemian

+0

_ «Пожалуйста, не используйте никого из них». _ Нет, вам нужно – Baby

+0

Вы можете сделать это без вас, вам просто нужны огромные размеры массивов и множество дополнительного кода. –

ответ

0

может быть что-то вроде этого вы можете использовать

public static void main(String[] args) { 
     String[] arr1 = {"a", "b", "c", "a", "a"}; 
     String[] duplicates = new String[arr1.length]; 
     boolean d = false; 
     int count = 0; 
     String dup = ""; 
     for(int i = 0;i < arr1.length;i++){ 
      count = 0; 
      dup = ""; 
      d = false; 

      for(int j = 0;j < arr1.length;j++){ 
       if(i != j){ 
        if(arr1[i].equals(arr1[j]) && !arr1[i].equals("")){ 
         arr1[j] = ""; 
         d = true; 
         count++; 
         dup = arr1[i]; 

        } 

       } 
      } 
      if(d){ 
      duplicates[i] = dup + count; 
      d = false;} 

     } 
     for(int k = 0;k < duplicates.length;k++) 
     System.out.println(duplicates[k]); 
    } 
0

Ну, одно решение создать 2 массивов и имеют один держать уникальные строки, а другой его целочисленный счетчик. По мере того, как вы индексируете свой массив строк, добавьте уникальные строки и увеличите количество инцидентов. Это не очень элегантное или эффективное решение, но оно должно работать.

1

Использование ниже код: -

public static String[] removeDuplicates(String[] numbersWithDuplicates) { 

    // Sorting array to bring duplicates together 
    Arrays.sort(numbersWithDuplicates); 

    String[] result = new String[numbersWithDuplicates.length]; 
    String[] duplicate = new String[numbersWithDuplicates.length]; 
    String previous = numbersWithDuplicates[0]; 
    result[0] = previous; 
    int counter=1; 
    int duplicateCounter=0; 

    for (int i = 1; i < numbersWithDuplicates.length; i++) { 
     String ch = numbersWithDuplicates[i]; 

     if (previous != ch) { 
      result[counter++] = ch; 
     } 
     else 
     { 
      duplicate[duplicateCounter++]=ch; 
     } 
     previous = ch; 
    } 

    for (int i = 0; i < result.length; i++) { 
     System.out.println(result[i]); 
    } 

    System.out.println("Duplicate Values are ---"); 
    for (int i = 0; i < duplicate.length; i++) { 
     System.out.println(duplicate[i]); 
    } 
    return result; 

} 
+0

Мне нравится _trick_ с сортировкой в ​​первую очередь; -] – t3chb0t

Смежные вопросы