. 가장 가까운 회문 찾기

PHPz
풀어 주다: 2024-08-25 06:37:02
원래의
1240명이 탐색했습니다.

. Find the Closest Palindrome

564. 가장 가까운 회문 찾기

난이도:어려움

주제: 수학, 문자열

정수를 나타내는 문자열 n이 주어지면 _가장 가까운 정수(자신을 포함하지 않음), 즉 회문을 반환합니다. 동점일 경우 더 작은 것을 돌려주세요.

가장 가까운 것은 두 정수 사이의 절대 차이가 최소화된 것으로 정의됩니다.

예 1:

  • 입력: n = "123"
  • 출력: "121"

예 2:

  • 입력: n = "1"
  • 출력: "0"
  • 설명: 0과 2는 가장 가까운 회문이지만 가장 작은 것인 0을 반환합니다.

제약조건:

  • 1
  • n은 숫자로만 구성됩니다.
  • n 앞에 0이 없습니다.
  • n은 [1, 1018 - 1] 범위의 정수를 나타냅니다.

힌트:

  1. 이 문제에 무차별 대입이 효과가 있을까요? 다른 것을 생각해 보세요.
  2. 1234, 999,1000 등과 같은 몇 가지 예를 들어 가장 가까운 회문을 확인하세요. 얼마나 다양한 경우가 가능한가요?
  3. 문자열의 왼쪽 절반, 오른쪽 절반만 고려해야 합니까, 아니면 둘 다를 고려해야 합니까?
  4. 12932, 99800, 12120이라는 숫자 중 가장 가까운 회문을 찾아보세요. 뭔가 관찰하셨나요?

해결책:

잠재적인 회문 후보를 생성한 다음 입력 숫자에 가장 가까운 것을 선택하는 함수를 만드는 데 중점을 둘 것입니다.

솔루션 접근 방식:

  1. 회문 후보 식별:

    • 숫자의 전반부를 미러링하여 회문을 만듭니다.
    • 모든 숫자가 9, 100...001 또는 99...99인 극단적인 경우를 고려하세요.
    • 숫자의 중간을 1씩 위 또는 아래로 수정하여 회문을 생성합니다.
  2. 가장 가까운 회문 계산:

    • 각 회문 후보에 대해 원래 숫자와의 절대차를 계산합니다.
    • 차이가 가장 작은 회문을 반환합니다. 동점이면 더 작은 회문을 반환하세요.

이 솔루션을 PHP로 구현해 보겠습니다: 564. 가장 가까운 회문 찾기

<?php
/**
* @param String $n
* @return String
*/
function nearestPalindromic($n) {
    ...
    ...
    ...
    /**
     * go to https://github.com/mah-shamim/leet-code-in-php/tree/main/algorithms/000564-find-the-closest-palindrome/solution.php
     */
}

function generatePalindrome($firstHalf, $isOddLength) {
    ...
    ...
    ...
}

// Example usage
echo nearestPalindromic("123"); // Output: "121"
echo nearestPalindromic("1");   // Output: "0"
?>
로그인 후 복사

설명:

  • 생성Palindrome($firstHalf, $isOddLength):
    • 이 도우미 기능은 숫자의 전반부를 미러링하여 회문을 만듭니다.
<?php
/**
* @param $firstHalf
* @param $isOddLength
* @return string
*/
function generatePalindrome($firstHalf, $isOddLength) {
    $secondHalf = strrev(substr($firstHalf, 0, $isOddLength ? -1 : $firstHalf));
    return $firstHalf . $secondHalf;
}
?>
로그인 후 복사
  • 최첨단 케이스:

    • 100...001 또는 99...99와 같은 숫자에서 생성된 회문은 이러한 경우를 명시적으로 확인하여 처리됩니다.
  • 메인 로직:

    • 가능한 회문을 계산한 다음 절대차를 비교하여 가장 가까운 회문을 찾습니다.

이 솔루션은 가능한 회문 후보를 효율적으로 좁히고 몇 가지 옵션만 고려하여 가장 가까운 것을 선택하므로 무차별 접근 방식보다 훨씬 빠릅니다.

연락처 링크

이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!

이렇게 더 유용한 콘텐츠를 원하시면 저를 팔로우해주세요.

  • 링크드인
  • 깃허브

위 내용은 . 가장 가까운 회문 찾기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿