Смешайте две строки в Java - PullRequest
2 голосов
/ 13 декабря 2010

Мне было интересно, можно ли смешать две строки в Java.Предположим, у меня есть

11111

и

22222

Как лучше всего объединить их в форму?

1212121212

Ответы [ 4 ]

4 голосов
/ 13 декабря 2010

Предполагая, что обе строки имеют одинаковую длину, вы можете просто написать цикл для перехода по символам и делать то, что вы хотите:

String s1, s2; /* input strings */

StringBuilder sb = new StringBuilder();
for (int i = 0; i < s1.length(); i++) {
  sb.append(s1.charAt(i));
  sb.append(s2.charAt(i));
}

String result = sb.toString();
1 голос
/ 13 декабря 2010

Вот реализация, которая сохраняет остаток строк неравной длины:

public static String mix(String a, String b) {
    final int aLength = a.length();
    final int bLength = b.length();
    final int min = Math.min(aLength, bLength);
    final StringBuilder sb = new StringBuilder(aLength + bLength);
    for(int i = 0; i < min; i++) {
        sb.append(a.charAt(i));
        sb.append(b.charAt(i));
    }
    if (aLength > bLength) {
        sb.append(a, bLength, aLength);
    } else if (aLength < bLength) {
        sb.append(b, aLength, bLength);
    }
    return sb.toString();
}
1 голос
/ 13 декабря 2010

Интересно, является ли приведенный пример преднамеренным, то есть все они повторяют 1 символ?В этом случае все гораздо проще.Если нет, то другие ответы хороши.

1 голос
/ 13 декабря 2010

Да - итерация первой строки, и для каждого символа в ней, добавьте к строителю символ в той же позиции от второй строки (если она существует):

StringBuilder sb = new StringBuilder();
for (int i = 0; i < str1.length(); i++) {
    sb.append(str1.charAt(i));
    if (str.length() > i) {
       sb.append(str2.charAt(i));
    }   
}
return sb.toString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...