Разделить строку по два символа

Разбить строку на пары из двух символов. Если строка содержит нечетное количество символов, она должна заменить отсутствующий второй символ последней пары подчеркиванием ('_').

Пробовал такое решение но оно не проходит тесты

import java.util.ArrayList;
import java.util.List;

public class StringSplit {
   public static List<String> solution(String s) {
       List<String> res = new ArrayList<>();
       for(int i = 0;i < s.length()-1;i+=2){
           res.add(s.charAt(i) +String.valueOf(s.charAt(i+1)));
       }
       if(s.length()%2 != 0){
           res.add(s.charAt(s.length() - 1) + String.valueOf('_'));
       }
       return res;
   }
}

Ответы (1 шт):

Автор решения: Alex Rudenko

Судя по ошибке, нужно возвращать не список строк, а массив, так как тест пытается преобразовать массив в строку Arrays.toString(StringSplit.solution(s)), для чего нужно изменить тип возвращаемого значения в методе и преобразовать список в массив:

public static String[] solution(String s) {
// ...
    return res.toArray(new String[0]);
}

Также можно предварительно дополнить входную строку символом '_' и воспользоваться регулярным выражением (?<=\G.{2}) в методе String::split, где {2} определяет длину фрагмента строки после разбития:

public static String[] solution(String s) {
    if (s.length() % 2 != 0) {
        s = s + "_";
    }
    
    return s.split("(?<=\\G.{2})");
}
→ Ссылка