检查字符串数组中的字符是不是重复

时间:2015-12-02 00:14:26

标签: java arrays string

所以这个想法是针对数组中给定的一组字符串,我想将它们组合起来创建一个字符串。

例如:

 array[0] = "abcde";
 array[1] = "bcfgp";
 array[2] = "fbcns";
 array[3] = "fbdrq";

我想加入他们,从而获得数组中每个字母的第一个字母。 我用这段代码做得很好:

        String[] array = new String[4];
        array[0] = "abcde";
        array[1] = "bcfgp";
        array[2] = "fbcns";
        array[3] = "fbdrq";

        int wordLength = array[0].length();

        StringBuilder b = new StringBuilder();

        // check through letter in each word
        for (int i = 0; i < wordLength; i++) {
            char[] charArray = new char[wordLength];
            // checks each word in the array
            for (int j = 0; j < 4; j++) {
                char ch = array[j].charAt(i);
                b.append(ch);
            }
        }

因此,此代码会创建字符串&#34; abffbcbbcfcddgnrepsq&#34; ,这很好。

我想要的是在i的位置删除重复项。所以对于使用的例子:

           i=01234
 array[0] = "abcde";
 array[1] = "bcfgp";
 array[2] = "fbcns";
 array[3] = "fbdrq";

所以你可以看到当i = 0时,有一个f的副本,所以不是在字符串中添加两个f,而是如何只添加一个?

i = 1有3个b,所以我只添加一个字符串和c

i = 2只向字符串添加1 c,d和d ..

你得到了图片,最终输出将是:

&#34; abfbccfddgnrepsq&#34;

1 个答案:

答案 0 :(得分:0)

Set可用于识别副本,如下所示:

   StringBuilder b = new StringBuilder();

   // check through letter in each word
   Set<Character>st = new HashSet<>();
   for (int i = 0; i < wordLength; i++) {

       st.clear();
       char[] charArray = new char[wordLength];
       // checks each word in the array

       for (int j = 0; j < 4; j++) {
           char ch = array[j].charAt(i);
           if(st.add(ch))  
           b.append(ch);
       }
   }