Постановка задачи
Строка называется нецензурной лексикой, если она содержит не менее K последовательных символов ‘*’.
Вам дана строка S длины N. Определите, использует ли она нецензурную лексику.
Вход
- Первая строка входных данных содержит единственное целое число T, обозначающее количество тестовых случаев. Ниже приводится описание T тестовых случаев.
- Первая строка каждого набора входных данных содержит два целых числа, разделенных пробелом, N и K.
- Вторая строка содержит единственную строку S длины N.
Вывод
Выведите одну строку, содержащую строку "YES"
, если строка содержит ненормативную лексику, или "NO"
, если нет (без кавычек).
Вы можете печатать каждый символ каждой строки в верхнем или нижнем регистре (например, строки «yEs», «yes», «Yes» и «YES» будут считаться идентичными).
Ограничения
- 1≤T≤10
- 1≤K≤N≤10⁶
- S содержит только строчные латинские буквы и символы «*»
- Сумма N по всем тестам не превышает 10⁶.
Подзадачи
Подзадача №1 (30 баллов): N≤10⁴, сумма всех тестовых случаев не более 10⁴
Подзадача №2 (70 баллов): исходные ограничения
Пример ввода
3
5 2
*a*b*
5 2
*a**b
5 1
abcde
Пример вывода
NO
YES
NO
Объяснение
Пример 1. Поскольку нет двух последовательных символов «*», строка не содержит ненормативной лексики.
Пример 2. Два смежных символа «*» означают, что строка содержит ненормативную лексику.
Пример 3. Поскольку в строке нет символов «*», она не содержит ненормативной лексики.
Код (решение)
Код был реализован на Java
/* package codechef; // don't place package name! */ import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to be "Main" only if the class is public. */ class Codechef { public static void main (String[] args) throws java.lang.Exception { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); while(t-- > 0){ int n = sc.nextInt(); int k = sc.nextInt(); sc.nextLine(); String str = sc.next(); int count=0,cnti=0; for(int i=0;i<n;i++){ if(str.charAt(i)=='*'){ count++; if(count==k){ System.out.println("YES"); cnti++; break; } } else count =0; } if(cnti == 0) System.out.println("NO"); } } }
Надеюсь, вам понравилась статья. Пожалуйста, поставьте 50 аплодисментов этой статье и подписывайтесь на меня, чтобы не пропустить новые блоги, связанные с программированием.
Ссылки