Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 사전순으로 X번째로 작은 하위 문자열에 응답하는 쿼리

<시간/>

이 문제에서는 문자열 str 및 Q 쿼리가 제공됩니다. 각 쿼리에는 숫자 X가 있습니다. 우리의 임무는 C++에서 사전순으로 X번째로 작은 하위 문자열에 답하는 쿼리를 푸는 프로그램을 만드는 것입니다.

문제 설명

각 쿼리에 대해 사전순으로 가장 작은 X번째 하위 문자열을 찾아야 합니다. 즉, 알파벳 순서 정렬을 기반으로 X번째 하위 문자열을 찾아야 합니다.

문제를 이해하기 위해 예를 들어보겠습니다.

입력 :str ="포인트"

Q =4 쿼리 ={4, 7, 2, 13}

출력: n, oi, 인, 포인트

설명

사전순으로 된 str 의 모든 부분 문자열은 -

i, in, int, n, nt, o, oi, oin, oint, p, po, poi, poin, point, t

네 번째 하위 문자열 - n

7번째 하위 문자열 - oi

두 번째 하위 문자열 -

13번째 하위 문자열 - 포인트

해결 방법

간단한 솔루션은 문자열의 가능한 모든 하위 문자열을 생성하여 데이터 구조에 저장한 다음 사전순, 즉 알파벳 순서로 정렬하는 것입니다. 그런 다음 쿼리의 X에 대해 구조에서 해당 하위 배열을 인쇄해야 합니다.

부분 문자열을 저장하기 위해 벡터를 사용합니다.

#include 네임스페이스 std;vector substrings 사용;void find_SortSubstrings(string s) { int len ​​=s.size(); for (int i =0; i  

출력

Query 1 :사전식으로 4번째로 작은 하위 문자열은 nQuery 2 :사전식으로 9번째로 작은 하위 문자열은 ointQuery 3 :사전식으로 5번째로 작은 하위 문자열은 ntQuery 4 :사전식으로 15번째로 작은 하위 문자열은 t