在不使用额外数组的情况下删除重复字符

小白菜

我目前正在研究 Cracking the Coding Interview,我正在寻找一些关于我可以做些什么来纠正这个算法的建议。它似乎适用于某些测试用例,但它不适用于作为输入的测试用例 ['a','a','a','b','b','b]。任何想法我做错了什么?谢谢!

预期结果 = ['a','b']
实际结果 = ['a']

/**
 * Removes duplicate chars
 * 
 * @param str
 */
public static void removeDuplicates(char[] str) {

    if (str.length < 2) {
        return;
    }

    for (int i = 0; i < str.length; i++) {

        for (int j = 0; j < str.length; j++) {
            if ((str[i] == str[j]) && (i != j)) {
                str[j] = 0;
            }
        }
    }
}
用户7627726

尝试这样做:

public static void removeDuplicates(char[] str) {

    if (str.length < 2) {
        return;
    }

    for (int i = 0; i < str.length; i++) {
        for (int j = 0; j < str.length; j++) {
            System.out.println(i + "-" + j + " = " + str[j]); //added this line
            if ((str[i] == str[j]) && (i != j)) {
                str[j] = 0;
            }
        }
    }
}

我为什么要给你看这个?这将向您展示删除过程的过程,并帮助您更好地了解问题。它实际上工作正常。

我不知道你是怎么得到结果的,因为没有打印语句,没有return语句。但是我确实找到了一种无需使用另一个char数组(或任何与此相关的数组)的方法。它只是重建str. 一探究竟:

public static void main(String[] args) {
    char[] chr = {'a','a','b','c','b','a','b','c'};
    System.out.println(removeDuplicates(chr));
}

public static char[] removeDuplicates(char[] str) {
    if (str.length < 2) {
        return null;
    }
    for (int i = 0; i < str.length; i++) {
        for (int j = 0; j < str.length; j++) {
            if ((str[i] == str[j]) && (i != j)) {
                str[j] = 0;
            }
            if (i == (str.length-1)) {
                str[i] = str[j];
            }
        }
    }
    return str;
}

这个例子给出了输出:

abc

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不使用数组的情况下删除字符串中的重复单词?

来自分类Dev

在不使用Util类的情况下从数组中删除重复项

来自分类Dev

如何在不使用`uniq`的情况下删除数组中的重复项?

来自分类Dev

如何在不使用While的情况下删除左侧重复的字符串?

来自分类Dev

在不使用附加缓冲区的情况下从Python中删除字符串中的重复项

来自分类Dev

如何在不使用硬核索引的情况下擦除父数组中子数组的重复项

来自分类Dev

如何在不使用Distinct的情况下删除SQL查询中的重复项?

来自分类Dev

如何在不使用集合的情况下从python列表中删除重复的单词?

来自分类Dev

如何在不使用主键的情况下删除重复记录

来自分类Dev

在不使用ROW_NUMBER()函数的情况下删除重复的记录

来自分类Dev

如何在SQL中不使用DISTINCT的情况下删除重复值?

来自分类Dev

在不使用任何数据结构的情况下从输入中删除重复项

来自分类Dev

在不使用set的情况下从嵌套列表中删除重复项

来自分类Dev

在不使用set()的情况下删除元组中的重复项

来自分类Dev

如何在不使用集合的情况下从python列表中删除重复的单词?

来自分类Dev

在不使用熊猫的情况下合并和删除两个 csv 中的重复项

来自分类Dev

C ++如何在不使用向量的情况下从数组中删除0个值

来自分类Dev

如何在不使用 Java 索引的情况下从 Arraylist 中删除数组元素

来自分类Dev

如何在不使用内置函数的情况下从python中的数组中删除元素

来自分类Dev

防止在不使用索引的情况下插入重复项

来自分类Dev

在不使用数组的情况下计算字符串中的唯一单词

来自分类Dev

C ++:在不使用向量的情况下将字符串数组传递给函数

来自分类Dev

如何在不使用数组的情况下计算C中的相同字符

来自分类Dev

如何在不使用 .join() 的情况下加入字符串数组?

来自分类Dev

如何在不使用硬核索引的情况下擦除父级数组中子级数组的重复项

来自分类Dev

在不使用on()的情况下删除动态添加的元素

来自分类Dev

如何在不使用数组的情况下比较这两个字符串并删除一个公共字母?

来自分类Dev

如何在不使用任何内置php函数的情况下搜索字符串中的连续重复字符?

来自分类Dev

在不使用malloc的情况下创建动态数组

Related 相关文章

  1. 1

    如何在不使用数组的情况下删除字符串中的重复单词?

  2. 2

    在不使用Util类的情况下从数组中删除重复项

  3. 3

    如何在不使用`uniq`的情况下删除数组中的重复项?

  4. 4

    如何在不使用While的情况下删除左侧重复的字符串?

  5. 5

    在不使用附加缓冲区的情况下从Python中删除字符串中的重复项

  6. 6

    如何在不使用硬核索引的情况下擦除父数组中子数组的重复项

  7. 7

    如何在不使用Distinct的情况下删除SQL查询中的重复项?

  8. 8

    如何在不使用集合的情况下从python列表中删除重复的单词?

  9. 9

    如何在不使用主键的情况下删除重复记录

  10. 10

    在不使用ROW_NUMBER()函数的情况下删除重复的记录

  11. 11

    如何在SQL中不使用DISTINCT的情况下删除重复值?

  12. 12

    在不使用任何数据结构的情况下从输入中删除重复项

  13. 13

    在不使用set的情况下从嵌套列表中删除重复项

  14. 14

    在不使用set()的情况下删除元组中的重复项

  15. 15

    如何在不使用集合的情况下从python列表中删除重复的单词?

  16. 16

    在不使用熊猫的情况下合并和删除两个 csv 中的重复项

  17. 17

    C ++如何在不使用向量的情况下从数组中删除0个值

  18. 18

    如何在不使用 Java 索引的情况下从 Arraylist 中删除数组元素

  19. 19

    如何在不使用内置函数的情况下从python中的数组中删除元素

  20. 20

    防止在不使用索引的情况下插入重复项

  21. 21

    在不使用数组的情况下计算字符串中的唯一单词

  22. 22

    C ++:在不使用向量的情况下将字符串数组传递给函数

  23. 23

    如何在不使用数组的情况下计算C中的相同字符

  24. 24

    如何在不使用 .join() 的情况下加入字符串数组?

  25. 25

    如何在不使用硬核索引的情况下擦除父级数组中子级数组的重复项

  26. 26

    在不使用on()的情况下删除动态添加的元素

  27. 27

    如何在不使用数组的情况下比较这两个字符串并删除一个公共字母?

  28. 28

    如何在不使用任何内置php函数的情况下搜索字符串中的连续重复字符?

  29. 29

    在不使用malloc的情况下创建动态数组

热门标签

归档