【问题标题】:Checking characters in a string array aren't duplicates检查字符串数组中的字符不重复
【发布时间】:2015-12-02 08:26:58
【问题描述】:

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

例如:

 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,所以我只会在字符串和 c 中添加一个

i=2 只给字符串加上 1 个 c 和 d 和 d..

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

“abfbccfddgnrepsq”

【问题讨论】:

  • array中长度为i的所有字符串吗?
  • 他们确实是@trashr0x

标签: java arrays string


【解决方案1】:

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 循环之后创建集合不是更容易吗?不会有更多的工作吗?不过谢谢你
  • @user3667111,是的,可能会,这只是您的偏好。两者都正常工作。
猜你喜欢
  • 1970-01-01
  • 2018-08-19
  • 2015-01-22
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-19
相关资源
最近更新 更多