为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PIPIONE 2022-01-19 15:37:16
这是一道面试题。输入是一个 ArrayList。我的第一个想法是将其转换为二维矩阵,然后合并每一列,但这似乎不是正确的答案。有没有其他方法可以解决这个问题?谢谢。输入"abc", "bef", "g"预期输出(第一列,abg,然后是第二列,be最后是第三列,cf):"abgbecf"
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

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


StringBuilder sb = new StringBuilder()

for(String str : arrList){

    sb.append(str)

}

return sb.toString()


查看完整回答
反对 回复 2022-01-19
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

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


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

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


查看完整回答
反对 回复 2022-01-19
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

像这样的东西会起作用:


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


查看完整回答
反对 回复 2022-01-19
  • 3 回答
  • 0 关注
  • 202 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信