>  기사  >  백엔드 개발  >  C++ 프로그램: 단어 위치를 알파벳 순서로 재배열합니다.

C++ 프로그램: 단어 위치를 알파벳 순서로 재배열합니다.

WBOY
WBOY앞으로
2023-09-01 23:37:191132검색

C++ 프로그램: 단어 위치를 알파벳 순서로 재배열합니다.

이 문제에서는 문자열이 입력으로 주어지며 문자열에 나타나는 단어를 사전순으로 정렬해야 합니다. 이를 위해 문자열의 각 단어에 1부터 시작하는 인덱스(공백으로 구분)를 할당하고 출력을 정렬된 인덱스로 얻습니다.

으아아아

입력 문자열의 단어가 사전순으로 정렬되었으므로 출력은 "1 2"로 인쇄됩니다.

몇 가지 입력/결과 시나리오를 살펴보겠습니다. -

입력 문자열의 모든 단어가 동일하다고 가정하고 결과를 살펴보겠습니다 -

으아아아

얻어진 결과는 단어의 마지막 위치가 됩니다.

이제 동일한 문자로 시작하는 단어가 포함된 입력 문자열을 고려해 보겠습니다. 결과 출력은 시작 문자의 후속 문자를 기반으로 합니다.

으아아아

이 방법에 대한 또 다른 일반적인 입력 시나리오와 얻은 결과는 다음과 같습니다. -

으아아아

Note - 반환된 위치는 입력 문자열에서 해당 단어의 원래 위치입니다. 메서드 내에서 단어가 정렬되면 이 숫자는 변경되지 않습니다.

알고리즘

  • 이 방법은 벡터 및 지도 추상 데이터 유형을 사용하여 수행됩니다.

  • 자동 반복기를 사용하여 문자열 범위 내에서 입력 문자열을 탐색합니다.

  • 단어를 알파벳순으로 바꾸는 것은 이러한 요소를 벡터 데이터 유형의 뒤쪽으로 밀어서 수행됩니다.

  • 단어가 사전순으로 재배열되면 문자열에서 해당 단어의 원래 위치가 출력으로 반환됩니다.

["articles", "point", "world"]라는 문자열이 있고 문자열의 순서는 -

입니다. 으아아아

각 문자열을 인덱스로 매핑할 수 있습니다. 그런 다음 문자열을 정렬하고 지도의 색인을 인쇄할 수 있습니다. C++의 정렬된 데이터 구조인 맵을 사용하여 키-값 쌍을 저장할 수 있습니다. 우리의 접근 방식을 빠르게 구현해 보겠습니다.

으아아아

출력

으아아아

이제 문자열 재정렬은 다음과 같습니다 -

으아아아

시간 복잡도 - O(n * log n)

공간 복잡성 - O(n)

결론

우리는 지도를 사용하여 사물을 분류하고 매핑합니다. 또한 해시 맵을 사용하고, 벡터나 배열을 정렬하고, 해시 맵의 인덱스를 인쇄할 수 있습니다. 시간 복잡도는 O(n*log(n))이고 공간 복잡도는 O(n)입니다.

위 내용은 C++ 프로그램: 단어 위치를 알파벳 순서로 재배열합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제