如何逐字合并字符串列表?

时间:2018-11-13 19:29:14

标签: java algorithm

这是一个面试问题。输入是一个ArrayList。我的第一个想法是将其转换为2D矩阵,然后合并每一列,但这似乎不是正确的答案。还有其他解决方法吗?谢谢。

输入

"abc", 
"bef", 
"g"

预期的输出(第一列abg,第二列be,最后第三列cf

"abgbecf"

3 个答案:

答案 0 :(得分:0)

类似的事情会起作用:

StringBuilder sb = new StringBuilder()
int max = 0;
for(String str : arrList){
    if(str.length > max) { 
        max = str.length;
    }
}
for(int i = 0; i < max; i++){
    for(String str : arrList){
        if(str.length > i){
            sb.append(str.charAt(i));
        }
    }
}
return sb.toString();

答案 1 :(得分:0)

我想我会简单地遍历整个列表,将下一个字符从原始字符串中拉出并将其添加到新的组合字符串中,直到添加了最长字符串的最后一个字母为止。

boolean keepGoing = true;
int index = 0;
StringBuilder result = new StringBuilder();
while(keepGoing) {
    keepGoing = false;
    for(int i=0; i < stringList.size(); i++) {
        if(stringList.get(i).length() > index) {
            result.append(stringList.get(i).charAt(index));
            keepGoing = true;
        }
    }
    index++;
}
System.out.println("result: " + result);

可能有更优雅的解决方案,但这就是我要开始的,然后根据需要进行完善。

答案 2 :(得分:-1)

一种简单的方法是使用StringBuilder:

StringBuilder sb = new StringBuilder()
for(String str : arrList){
    sb.append(str)
}
return sb.toString()