>  기사  >  백엔드 개발  >  HH:MM 형식으로 특정 기간 내의 누락된 값을 최대화합니다.

HH:MM 형식으로 특정 기간 내의 누락된 값을 최대화합니다.

王林
王林앞으로
2023-09-07 17:41:07587검색

HH:MM 형식으로 특정 기간 내의 누락된 값을 최대화합니다.

길이가 5인 주어진 문자열을 HH:MM 형식의 시간으로 나타냅니다. 문자열에는 "?"가 포함될 수 있으며 결과가 유효한 시간이 되고 가능한 가장 큰 시간이 되도록 이를 임의의 숫자로 바꿔야 합니다. 또한, 주어진 문자열 번호는 유효하며 ":"는 문자열의 정확한 위치에 나타납니다. 우리는 먼저 무차별적인 방법을 사용한 다음 효율적인 방법을 사용할 것입니다.

예제 예

1을 입력하세요

으아아아

Explanation

의 중국어 번역은

Explanation

입니다.

채울 수 있는 자리는 하나 뿐이며, 우리가 얻을 수 있는 최대 시간은 12시 59분입니다.

2를 입력하세요

으아아아

Explanation

의 중국어 번역은

Explanation

입니다.

여기에는 두 개의 빈 슬롯이 있습니다. 먼저 시간 부분에 초점을 맞추고 이를 채울 수 있는 세 가지 옵션(0, 1, 2)이 있습니다. 분 부분에는 0에서 5까지 선택할 수 있으며 최대화하려면 5를 채울 수 있습니다.

방법

지금까지 예시를 살펴보았습니다. 이제 우리가 직면할 수 있는 다양한 유형의 상황을 살펴보겠습니다 −

  • 문자열에는 시 부분과 분 부분이라는 두 부분이 있습니다.

  • 시 부분의 범위는 0~23, 분 부분의 범위는 0~59입니다.

  • 시간대에는 더 많은 상황이 있습니다−

    • 'x?' 여기서 x는 0, 1, 2일 수 있습니다. 0이면 0을 최선의 선택으로 선택할 수 있고, 1이면 9를 최선의 선택으로 선택할 수 있으며, 2이면 3을 최선의 선택으로 선택할 수 있습니다.

    • '?x', 여기서 x의 범위는 0에서 9까지입니다. x가 0~3 범위에 있으면 2로 바꿀 수 있고, 그렇지 않으면 1이 가장 좋습니다.

    • '??' 최대화해야 하므로 23으로 바꿉니다.

  • 회의록, 일부는 추가 사례 있음 −

    • 'x?' 여기서 x는 0에서 5 사이일 수 있습니다. 9는 '?'를 대체하는 최선의 선택이 될 것입니다.

    • '?x' 여기서 x는 0~9 범위에 있을 수 있습니다. '?'를 대체하려면 5가 최선의 선택이 될 것입니다.

    • "??" 왜냐하면 최대화한 다음 59로 대체해야 하기 때문입니다.

위 단계를 구현하는 코드를 살펴보겠습니다. -

Example

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

Example

으아아아

출력

으아아아

시간과 공간의 복잡성

위 코드의 시간 복잡도는 O(1) 또는 상수입니다. 왜냐하면 루프나 재귀 호출을 사용하지 않고 if-else 조건만 확인하기 때문입니다

위 코드의 공간 복잡도는 추가 공간을 사용하지 않기 때문에 O(1)입니다. 또한 이 함수의 경우 전달하는 문자열의 크기는 항상 고정된 5입니다.

참고: 코드를 더 아름답거나 읽기 쉽게 만들려면 스위치 문을 사용할 수 있습니다. 스위치 문은 시간이나 공간 복잡성에 영향을 주지 않으며 읽기를 더 효율적으로 만듭니다.

역추적 및 재확인도 해결책이지만 모든 경우를 확인하므로 여기서 구현하는 것은 효율적이지 않습니다.

결론

이 튜토리얼에서는 24시간 형식으로 시간을 나타내는 문자열이 제공됩니다. 최대 유효 시간을 얻기 위해 교체해야 하는 문자열에는 일부 "?"가 있으며 문자열의 문자는 항상 유효한 시간을 가리키도록 보장됩니다. 우리는 if-else 조건과 두 개의 함수를 사용하여 "?"를 적절한 대소문자로 대체했습니다. 루프나 재귀 함수를 사용하지 않기 때문에 위 코드의 시간 및 공간 복잡도는 일정합니다.

위 내용은 HH:MM 형식으로 특정 기간 내의 누락된 값을 최대화합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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