import java.util.ArrayList;
import java.util.List;
public class PlayTextProcessor {
public static String groupLinesByRoles(String[] roles, String[] textLines) {
List<StringBuilder> roleLines = new ArrayList<>(roles.length);
for (int i = 0; i < roles.length; i++) {
roleLines.add(new StringBuilder());
}
for (int lineIdx = 0; lineIdx < textLines.length; lineIdx++) {
String currentLine = textLines[lineIdx];
int displayLineNum = lineIdx + 1;
for (int roleIdx = 0; roleIdx < roles.length; roleIdx++) {
String rolePrefix = roles[roleIdx] + ":";
if (currentLine.startsWith(rolePrefix)) {
String speech = currentLine.substring(rolePrefix.length());
roleLines.get(roleIdx)
.append(displayLineNum)
.append(")")
.append(speech)
.append("\n");
break;
}
}
}
StringBuilder result = new StringBuilder();
for (int i = 0; i < roles.length; i++) {
result.append(roles[i]).append(":\n");
result.append(roleLines.get(i));
result.append("\n");
}
if (result.length() > 0) {
result.setLength(result.length() - 1);
}
return result.toString();
}
}