Учитывая массив строк, измените их порядок и их порядок так, чтобы их длина оставалась такой же, как и длина исходных входных данных
//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);
}
}