Учитывая массив строк, измените их порядок и их порядок так, чтобы их длина оставалась такой же, как и длина исходных входных данных

     //Input:  {"Welcome", "to", "Java", ",", "my", "friend", "!"}
     //Output: { "!dneirf", "ym", ",ava", "J", "ot", "emocle", "W" }

    String rev = Arrays.toString(a);
    String as = rev.substring(1, rev.length() - 1);
    String reversedString = new StringBuffer(as).reverse().toString();
    String[] arr = { reversedString };
                 //у меня выходит вот так  
               //  [! ,dneirf ,ym ,, ,avaJ ,ot ,emocleW]

** Массив перевернул ,как скопировать длину каждово элемента**


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

Автор решения: Дмитрий
public class Main {
    
    public static void main(String[] args) {
        
    }
    
    public static String[] reverse(String[] inputArr) {
        final StringBuilder sb = new StringBuilder();
        for (String word : inputArr) sb.append(word);
        String reverse = sb.reverse().toString();
        
        String[] result = new String[inputArr.length];
        int count = 0;
        for (int i = 0; i < inputArr.length; i++) {
            result[i] = reverse.substring(count, inputArr[i].length() + count);
            count += inputArr[i].length();
        }
        return result;
    }
    
}

И тесты с вашими примерами:

import org.junit.Assert;
import org.junit.Test;

public class MainTest {
        
    @Test
    public void testMain1() {
        System.out.println("reverse");        
        String [] inputArr = {"Don't", "worry", ",", "be", "happy", "!"};
        String [] expResult = {"!yppa", "heb,y", "r", "ro", "wt'no", "D"};        
        String[] result = Main.reverse(inputArr);
        Assert.assertArrayEquals(expResult, result);
    }
    
    @Test
    public void testMain2() {
        System.out.println("reverse");        
        String [] inputArr = {"Welcome", "to", "Java", ",", "my", "friend", "!"};
        String [] expResult = {"!dneirf", "ym", ",ava", "J", "ot", "emocle", "W"};        
        String[] result = Main.reverse(inputArr);
        Assert.assertArrayEquals(expResult, result);
    }
    
}
→ Ссылка