a11y

시간 제한3.5초메모리 제한1024 MB

요약
소문자 문자열 A가 주어질 때, 각 쿼리는 한 글자, 수, 다른 글자 형태로 주어지며, 두 글자 사이에 정확히 그 수만큼의 글자가 있는 A의 부분문자열 개수를 묻습니다.
난이도

보통10점 중 7점

유형
문자열, 해시맵, 문자열 매칭, 누적 합
정답자
아직 제출이 없습니다

문제

당신은 a11y라는 단어를 들어본 적이 있는가? 이는 accessibility (접근성)을 줄인 축약어로, a와 y 사이 11개의 문자가 있는 것을 뜻한다. 이와 비슷한 축약어로 k8s (Kubernetes), i18n (internationalization) 등이 있다.

길이 NN인 문자열 AA가 있다. 알파벳, 수, 알파벳으로 이루어진 축약어가 쿼리로 주어질 때, 이와 매칭되는 AA의 부분문자열이 몇 개 있는지 출력하여라. 개수를 셀 때는 같은 문자열이더라도 AA에서의 위치가 다르면 다른 것으로 친다.

어떤 문자열의 부분문자열이란, 문자열의 양 끝에서 문자를 00개 이상 지워서 만들 수 있는 문자열을 뜻한다. 예를 들어, abc의 부분문자열은 a, b, c, ab, bc, abc로 66개가 있다.

입력

첫 번째 줄에 알파벳 소문자로만 이루어진 길이가 NN인 문자열 AA가 주어진다. (1≤N≤100,0001\le N\le 100\\,000)

다음 줄에 쿼리의 수 QQ가 주어진다. (1≤Q≤100,0001\le Q\le 100\\,000)

그다음 QQ개의 줄에 축약어가 문자, 수, 문자 형태로 공백 없이 주어진다. 이때 두 문자는 알파벳 소문자이며, 가운데 수는 11 이상 N−2N-2 이하이다.

출력

QQ개의 줄에 쿼리의 답을 차례로 출력한다.

예제2

  1. 예제 1

    입력
    accessibility
    4
    a11y
    c2s
    i1i
    i1y
    
    예상 출력
    1
    2
    2
    1
    
  2. 예제 2

    입력
    abababababa
    4
    a1a
    a2a
    a1b
    a2b
    
    예상 출력
    5
    0
    0
    4