>  기사  >  백엔드 개발  >  문자열의 각 문자가 하위 문자열에 표시되도록 하는 문자열의 최대 분할 길이

문자열의 각 문자가 하위 문자열에 표시되도록 하는 문자열의 최대 분할 길이

WBOY
WBOY앞으로
2023-08-25 14:41:18940검색

문자열의 각 문자가 하위 문자열에 표시되도록 하는 문자열의 최대 분할 길이

이 기사에서는 고유 문자가 있는 문자열의 최대화 분할 길이를 찾는 방법에 대한 문제를 탐구합니다. 먼저 문제 설명을 이해한 다음 해당 알고리즘과 시간 복잡성을 포함하여 이 문제를 해결하기 위한 순진하고 효율적인 방법을 연구합니다. 마지막으로 C++로 솔루션을 구현하겠습니다.

문제 설명

문자열이 주어지면 문자열의 각 문자가 하나의 하위 문자열에만 나타나도록 문자열을 가능한 한 많은 하위 문자열로 분할합니다. 이러한 최대화 분할의 길이를 반환합니다.

순진한 방법

순진한 접근 방식은 문자열을 반복하여 각 문자의 마지막 항목을 기록하는 것입니다. 그런 다음 문자열을 다시 반복하고 현재 문자의 마지막 항목이 발견되면 파티션을 만듭니다.

알고리즘(순진함)

  • 문자열에서 마지막으로 나타나는 각 문자를 저장하려면 배열을 초기화하세요.

  • 문자열을 반복하면서 각 문자가 마지막으로 나타나는 것을 기록하세요.

  • 파티션 길이를 저장하려면 벡터를 초기화하세요.

  • 문자열을 다시 반복하고 현재 문자의 마지막 항목이 발견되면 파티션을 만듭니다.

C++ 코드(일반)

Example

의 중국어 번역은 다음과 같습니다:

Example

으아악

출력

으아악

시간 복잡도(순진한 알고리즘) - O(n), 여기서 n은 문자열의 길이입니다.

효율적인 방법

효율적인 방법은 간단한 방법과 유사하지만 문자열을 두 번 반복하는 대신 단일 반복에서 각 문자의 마지막 발생을 기록하면서 파티션을 만들 수 있습니다.

알고리즘(효율적)

  • 문자열에서 마지막으로 나타나는 각 문자를 저장하려면 배열을 초기화하세요.

  • 파티션 길이를 저장하려면 벡터를 초기화하세요.

  • 문자열을 반복하면서 각 문자의 마지막 발생을 기록하고, 현재 문자의 마지막 발생이 발견되면 파티션을 만듭니다.

C++ 코드(효율적)

으아악

출력

으아악

시간 복잡도(효율적) - O(n), 여기서 n은 문자열의 길이입니다.

결론

이 기사에서는 고유한 문자가 있는 문자열을 찾기 위해 파티션 길이를 최대화하는 문제를 살펴봅니다. 우리는 이 문제를 해결하기 위한 간단하면서도 효율적인 방법과 알고리즘 및 시간 복잡성을 논의합니다. 이 효율적인 접근 방식은 각 문자의 마지막 발생 기록과 단일 반복으로 파티션 생성을 결합하여 최적화된 솔루션을 제공합니다. 두 방법 모두 시간 복잡도는 동일하지만 효율적인 방법은 더 적은 반복을 사용합니다.

위 내용은 문자열의 각 문자가 하위 문자열에 표시되도록 하는 문자열의 최대 분할 길이의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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