Java объединяет 4 строки, затем усекает

Работает над проблемой Java

У меня есть 4 строки:s1, s2, s3, s4 что я должен объединить воедино. Если последующая результирующая строка длиннее 75 символов, мне нужно усечь, но начиная с s1 и обрезать самые правые символы этой строки, пока она не уместится в 75 с остальными 3. Если я в конечном итоге удаляю все символы в s1затем перейдите к s2 усечение, опять же от самого правого символа, до s2+s3+s4 <=75 и так далее.

Есть ли простой способ сделать это? Я думал о цикле while(), но он становится довольно сложным, когда я проверяю s1+s2+s3+s4 а затем обрезать одну строку за раз.

Кто-нибудь сделал что-то подобное и есть хорошее решение?

3 ответа

Сложите длины строк. Если результат больше 75, рассчитайте количество символов для усечения. Обрезайте первую строку до тех пор, пока вы не урежете правильное число символов или первая строка не станет пустой. В последнем случае повторите со строкой 2 и так далее. После этого объедините полученные строки.

Теперь вам просто нужно перевести прозу в код Java:-)

Вам нужно работать не со строками, а с их длиной.

  1. Получить сумму длины всех строк
  2. Проверьте, какую строку нужно усечь
  3. Получить сумму, начиная с усеченной строки.
String s1, s2, s3, s4;

ArrayList<String> list = new ArrayList<>();
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);

int len = 0;
for(String s : list)
    len += s.length();

if(len > 75)
{
    int diff = len - 75;
    for(int i = 0; i < list.size() && diff > 0; i++) {
        String s = list.get(i);
        int len = s.length();
        if(len < diff)
            list.set(i, null);
        else {
            s = s.subString(0, s.length() - diff);
            list.set(i, s);
        }
        diff -= len;
    }
}

String result = "";
for(String s : list) {
    if(s != null) {
        // concat ..
    }
}
Другие вопросы по тегам