>백엔드 개발 >C++ >문자열의 각 문자를 해당 빈도가 정확히 X회 뒤의 K번째 문자로 대체됩니다.

문자열의 각 문자를 해당 빈도가 정확히 X회 뒤의 K번째 문자로 대체됩니다.

PHPz
PHPz앞으로
2023-09-11 12:37:021121검색

문자열의 각 문자를 해당 빈도가 정확히 X회 뒤의 K번째 문자로 대체됩니다.

이 문제에는 문자열 "str", 정수 K, 정수 X가 제공됩니다. 문자열 "str"에는 1에서 9 사이의 정수만 포함됩니다. 우리는 이 문자열에 대해 X 연산을 수행해야 합니다. 작업은 매번 문자열의 문자 발생 횟수를 문자열의 문자로 바꿔야 한다는 것입니다. 여기서 빈도는 문자열의 문자 수 또는 값을 나타냅니다. 우리의 임무는 주어진 연산을 X번 수행한 후 k번째 문자를 반환하는 것입니다.

으아아아 으아아아

지침

우리는 주어진 작업을 3번 수행했습니다.

으아아아
  • 문자 str[0]의 경우 빈도는 1이고 값은 1이므로 1이 1번 나타납니다.

  • 문자 str[1]의 경우 빈도는 2이고 값은 2이므로 2가 2번 나타납니다.

  • 다른 캐릭터도 비슷해요.

으아아아

그러므로 정확히 X번 후에 문자열의 K번째 문자는 2입니다. 따라서 답은 2입니다.

으아아아 으아아아

주어진 문자열 위의 예를 보았으므로 메소드로 이동하겠습니다. -

순진한 방법

이 방법에서는 주어진 연산을 X번까지 수행하여 새 문자열을 계산합니다. 문자열을 정확히 X번 가져온 후 문자열의 K번째 문자를 반환합니다.

위 방법을 더 잘 이해하기 위해 코드를 살펴보겠습니다. -

으아아아

출력

으아아아

시간과 공간의 복잡성

시간 복잡도는 주어진 문자열 숫자에 따라 달라지며 숫자의 x승과 각 숫자의 합과 같습니다.

공간 복잡도는 시간 복잡도와 정확히 같습니다.

효율적인 방법

위 방법의 최적화된 버전입니다. 여기서는 매번 문자열을 생성하는 대신 각 헌장의 범위를 X번 계산합니다.

여기서 우리는 시간의 힘으로 증가된 캐릭터 값에 비해 캐릭터가 증가할 때마다 관찰합니다.

아래에서 위 방법의 주요 단계에 대해 논의해 보겠습니다. -

  • kthChar 변수를 만들어 x배 문자열의 KthChar를 저장하세요

  • X번 이후 각 문자의 발생 횟수를 저장하는 변수 tot를 만듭니다

  • for 루프를 사용하여 문자열을 반복하고 다음 단계를 수행하세요

  • ->현재 캐릭터의 값을 가져옵니다

    ->이 값과 X를 사용하면 X회 이후 현재 문자의 범위를 얻을 수 있습니다. 보시다시피 캐릭터의 힘 수치가 X만큼 증가할 때마다

    pow(값, X)로.

    −> X번 이후의 문자열 길이를 유지하려면 "tot" 변수에 범위를 저장하세요

    −> X번 이후의 K번째 문자가 현재 문자열 길이 내에 있는지 확인하세요

    As (K

  • kthChar로 돌아가기

으아아아

출력

으아아아

시간과 공간의 복잡성

위 코드의 시간 복잡도는 O(N)입니다. 여기서 N은 주어진 길이의 크기입니다.

위 코드의 공간 복잡도는 추가 공간을 사용하지 않기 때문에 O(1)입니다.

결론

이 튜토리얼에서는 각 문자를 해당 빈도로 정확히 X번 바꾼 후 문자열에서 K번째 문자를 찾는 프로그램을 구현했습니다. 우리는 두 가지 방법을 구현했습니다. 하나는 순진한 방법이고 다른 하나는 효과적인 방법입니다.

위 내용은 문자열의 각 문자를 해당 빈도가 정확히 X회 뒤의 K번째 문자로 대체됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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