forked from int28h/JavaTasks
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path0008.java
More file actions
78 lines (77 loc) · 4.33 KB
/
0008.java
File metadata and controls
78 lines (77 loc) · 4.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/**
* Вам дан список ролей и сценарий пьесы в виде массива строчек.
*
* Каждая строчка сценария пьесы дана в следующем виде:
* Роль: текст
*
* Текст может содержать любые символы.
*
* Напишите метод, который будет группировать строчки по ролям, пронумеровывать их и
* возвращать результат в виде готового текста (см. пример). Каждая группа распечатывается в следующем виде:
*
* Роль:
* i) текст
* j) текст2
* ...
* ==перевод строки==
*
* i и j -- номера строк в сценарии. Индексация строчек начинается с единицы,
* выводить группы следует в соответствии с порядком ролей. Переводы строк между группами обязательны,
* переводы строк в конце текста не учитываются.
*
* Заметим, что вам предстоит обработка огромной пьесы в 50 000 строк для 10 ролей –
* соответственно, неправильная сборка результирующей строчки может выйти за ограничение по времени.
*
* Обратите внимание еще на несколько нюансов:
*
* имя персонажа может встречаться в строке более одного раза, в том числе с двоеточием;
* название одной роли может быть префиксом названия другой роли (например, "Лука" и "Лука Лукич");
* роль, у которой нет реплик, тоже должна присутствовать в выходном файле;
* в качестве перевода строки надо использовать символ '\n' (перевод строки в стиле UNIX);
* будьте внимательны, не добавляйте лишних пробелов в конце строк.
* Sample Input:
*
* roles:
* Городничий
* Аммос Федорович
* Артемий Филиппович
* Лука Лукич
* textLines:
* Городничий: Я пригласил вас, господа, с тем, чтобы сообщить вам пренеприятное известие: к нам едет ревизор.
* Аммос Федорович: Как ревизор?
* Артемий Филиппович: Как ревизор?
* Городничий: Ревизор из Петербурга, инкогнито. И еще с секретным предписаньем.
* Аммос Федорович: Вот те на!
* Артемий Филиппович: Вот не было заботы, так подай!
* Лука Лукич: Господи боже! еще и с секретным предписаньем!
*
* Sample Output:
*
* Городничий:
* 1) Я пригласил вас, господа, с тем, чтобы сообщить вам пренеприятное известие: к нам едет ревизор.
* 4) Ревизор из Петербурга, инкогнито. И еще с секретным предписаньем.
*
* Аммос Федорович:
* 2) Как ревизор?
* 5) Вот те на!
*
* Артемий Филиппович:
* 3) Как ревизор?
* 6) Вот не было заботы, так подай!
*
* Лука Лукич:
* 7) Господи боже! еще и с секретным предписаньем!
*/
private String printTextPerRole(String[] roles, String[] textLines){
StringBuilder result = new StringBuilder();
for (String role : roles){
result.append(role + ":\n");
for (int i = 0; i < textLines.length; i++){
if (textLines[i].startsWith(role + ":")){
result.append((i+1) + ")" + textLines[i].substring(role.length() + 1) + "\n");
}
}
result.append("\n");
}
return result.toString();
}