在不使用Sets,Lists,ArrayLists的情况下在String []中查找重复值?

时间:2015-01-28 01:30:11

标签: java arrays

假设我们有这个数组:String[] arr1 = {"a", "b", "c", "a"};

我要做的是删除重复的String(在本例中为"a")并将其值添加到另一个名为duplicates的String []中。当副本添加到“duplicates”数组时,它在数组arr1中错误地发生的次数会在它旁边连接。 (recurredValue + amount)所以在这个例子中它将是a 1。我之前搜索过这个,所有这些都包括Lists,ArrayLists或Sets的使用。请不要使用它们中的任何一个。

3 个答案:

答案 0 :(得分: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;

}

答案 1 :(得分: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]);
  }

答案 2 :(得分:0)

嗯,一个解决方案是创建2个数组,其中一个包含唯一的字符串,另一个包含整数计数器。在索引样本字符串数组时,添加唯一字符串并增加事件。这不是一个非常优雅或有效的解决方案,但它应该有效。