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

3

因此,我的想法是将数组中的一组字符串组合在一起,以创建一个字符串。

例如:

 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);
            }
        }

所以这段代码创建了字符串"abffbcbbcfcddgnrepsq",这很好。

我希望在位置i处删除重复项。所以对于使用的示例:

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

你可以看到当i=0时,有一个f的重复,所以我应该如何只添加一个而不是两个f到字符串中?

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

i=2 只添加1个 c 到字符串中和 d 和 d ..

你明白了吧,最终输出为:

"abfbccfddgnrepsq"


数组array中的所有字符串长度都为i吗? - trashr0x
他们确实是@trashr0x。 - user5530090
1个回答

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);
       }
   }

美丽的是,第一个 for 循环之后创建集合难道不会更容易吗?这不会更费力吗?谢谢。 - user5530090
@user3667111,是的,也许会,这只是你的个人喜好。两者都能正常工作。 - ashiquzzaman33

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接