当前位置: 首页 > 知识库问答 >
问题:

Java从char数组中删除重复项的方法

贝嘉泽
2023-03-14

我有一个由用户填充的字符数组(arrayInput[]),其中包含一些字符,如{b,d,a,b,f,a,g,a,a,f},我需要创建一个方法,该方法返回一个新的字符数组,该数组只包含字符的第一个匹配项,但按输入顺序。这本书还说:“解决这个问题的一种方法是创建一个布尔数组来跟踪要捕捉的字符!”,但我无法想象布尔数组应该如何与其他数组一起工作。

主要问题是,如果arrayInput包含特定字符,甚至包含多少次,我可以保存在布尔数组中,但只能将很长的分支if-else创建为for,如

    if ((arrayOutput[i] == 'A') && (arrayControl[0] = false)) {
        arrayControl[0] = true;  }

其中,arrayOutput是我想从方法返回的数组,arrayControl[0]是我在方法中创建的布尔数组中“A”的值。A=0,B=1。。。Z=25,a=26,b=27。。。51=z。对于每个字符,大写和小写,我在数组中创建了一个位置,所以我可以检查所有内容,但现在我不能再进一步了。我不知道如何将字符保存在arrayOutput上,如何检查字符是否已经在arrayOutput上,如果已经在那里,数组将传递该特定字符并转到下一个字符。

另外请记住,我是一个新手,所以我对Java知之甚少。请尽可能地解释你自己。提前感谢!


共有3个答案

沈畅
2023-03-14

这可能会有所帮助。制作一个单独的数组,只存储不重复的字符。

char[] removeDuplicates (char[] arrayInput) {
    boolean exists[]=new boolean[26];
    char arrayOutput[] = new char[26];
    int ctr=0;
    for(int i=0; i<26; i++) {
        exists[i] = false;
    }
    for(int i=0; i<arrayInput.length; i++) {
        if(!exists[arrayInput[i]-97]) {
            exists[arrayInput[i]-97]=true;
            arrayOutput[ctr++]=arrayInput[i];
        }
    }

   return Arrays.copyOfRange(arrayOutput, 0, ctr);

}
向苗宣
2023-03-14
 boolean arr[26]; //considering only small letters arrive. otherwise take a larger array.
for( i=0;i<str.length;i++ )
  arr[str[i]-'a']=true;

循环为真之后,最后的是实际字符。(删除所有重复项)。

考虑到这些立场,

int arr[26];
  //initialize all the array elemnts to 0
  for( i=0;i<str.length();i++ )
      if(i>=arr[str[i]-'a'])
            arr[str[i]-'a']=i+1;

//大于0的字符是非重复字符。它们第一次出现的位置=(arr[i]-1)

编辑:我最近一次使用java大约是一年前。正确地显示了算法。对不起,我的java代码很笨拙。

柳杰
2023-03-14
public static void main(String[] args) {
    Main main = new Main();
    char[] array = {'e','a','b','a','c','d','b','d','c','e'};
    main.getCharArray(array);
}

private char[] getCharArray(char[] array) {
    String _array = "";
    for(int i = 0; i < array.length; i++) {
        if(_array.indexOf(array[i]) == -1) // check if a char already exist, if not exist then return -1
            _array = _array+array[i];      // add new char
    }
    return _array.toCharArray();
}

eabcd

 类似资料:
  • 问题内容: 我应该读一个包含许多不同电子邮件地址的文件,并使用数组将它们打印出来。问题是我需要消除重复的电子邮件。 我能够尝试/捕捉并打印出电子邮件地址。但是,我不确定如何删除重复项。我对散列码或如何使用Set尚不了解。任何援助将不胜感激。 这是我到目前为止的内容: 问题答案: 简单的解决方案是使用Set Java, 因此设置自动删除重复值 并且在你的代码中你拥有数组,而不是将转换数组直接使用代码

  • 问题内容: 我使用下面的代码行遍历数据库中的一个表: 如果我打印出数组: 我会得到这个: 但是我想摆脱数组中的重复项,所以我使用 我得到下面的奇怪结果,这不是我想要的结果: 理想情况下,我认为它应该返回以下内容: 我该怎么做才能正确处理?我使用了错误的PHP语法/默认功能吗? 问题答案: 该功能将为您完成此操作。您只需要添加标志:

  • 这是我的数据: 使用Lodash,我如何删除具有重复id键的对象?有过滤器,地图和独特的东西,但不太确定。 我的真实数据集要大得多,有更多的键,但概念应该是一样的。

  • 所以,我有两个多维数组。 数组值示例: 这就是我想要的 我想从组合中获得所有唯一的数组,并用它填充唯一的组合。 我尝试了这个函数,但它只填充了5个数组,真奇怪!

  • 我有一个问题编码这个: 编写一个名为的静态方法,该方法将整数数组作为输入,并返回一个新的整数数组,其中所有重复项都被删除。例如,如果输入数组具有元素{4,3,3,4,5,2,4},则结果数组应为{4,3,5,2} 这是我目前所做的

  • 我似乎找不到解决这个问题的方法,你如何从基于数组的值的数组中删除项?就像你移除一个一样? 我需要删除一些s: 这将返回一个数组,但感觉有些不对劲。若要删除一个项目,那个就可以了,但通过ID数组从数组中删除项目,我不知道从哪里开始。 在循环中,我试图使用,但un定义在数组中:: 到目前为止,React表示在循环期间无法更新状态。基于,如何使一个项目处于状态?