所以这个想法是针对数组中给定的一组字符串,我想将它们组合起来创建一个字符串。
例如:
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;
答案 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);
}
}