Ссылка: https://www.hackerrank.com/challenges/t ... -extractor
Постановка задачи:
В языках на основе тегов, таких как XML или HTML, содержимое заключено в рамку. между открывающим и конечным тегом. Обратите внимание, что соответствующий конечный тег начинается с /.
Для получения строки текста на языке, основанном на тегах, проанализируйте этот текст и извлеките заключенное в нем содержимое. внутри последовательностей хорошо организованных тегов, соответствующих следующему критерию:
- Имена начального и конечного тегов должны совпадать.
- Теги могут быть вложенными, но содержимое между вложенными тегами считается недопустимым.
- Теги могут состоять из любых печатных символов.
Первая строка входных данных содержит одно целое число N (количество строк).
N последующих строк содержат по одной строке текста.
Ограничения:
< ul>
[*]
Код: Выделить всё
1 0) {
String line = in.nextLine();
char[] A = line.toCharArray();
String tag = "", tag1 = "";
int a1 = 0, b1 = 0;
int a = 0, b = 0;
int flag = 0, end = 0;
a = line.indexOf('', b1);
//System.out.println("Index of first '' is " + b);
while ((a != -1) && (b != -1) && b < line.lastIndexOf(">")) {
tag = "";
tag1 = "";
//System.out.println("Index of first '' is " + b);
for (int k = a + 1; k < b; k++)
tag = tag + A[k];
//System.out.println("tag is " + tag);
a1 = line.indexOf('', b + 1);
if (A[a1+1] == '/') {
//System.out.println("Index of second '' is " + b1);
for (int k = a1 + 2; k < b1; k++)
tag1 = tag1 + A[k];
if ((!tag.isEmpty()) && (!tag1.isEmpty())) {
if (tag.equals(tag1)) {
if ((b + 1) == a1) {
System.out.println("None");
flag = 1;
} else {
for (int k = b + 1; k < a1; k++)
System.out.print(A[k]);
System.out.println();
flag = 1;
}
} else if (flag == 0) {
System.out.println("None");
flag = 1;
}
}
}
a = a1;
b = b1;
//System.out.println("tag1 is " + tag1);
}
if ((b == -1 || a == -1 || tag1.isEmpty() || tag.isEmpty()) && (flag == 0)) {
System.out.println("None");
}
testCases--;
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/372 ... hackerrank
Мобильная версия