이 문제에서는 문자열 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사전>