这是一个面试问题。输入是一个ArrayList。我的第一个想法是将其转换为2D矩阵,然后合并每一列,但这似乎不是正确的答案。还有其他解决方法吗?谢谢。
输入
"abc",
"bef",
"g"
预期的输出(第一列abg
,第二列be
,最后第三列cf
)
"abgbecf"
答案 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()