. 가장 가까운 회문 찾기

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

. Find the Closest Palindrome

564. 가장 가까운 회문 찾기

난이도:어려움

주제:수학, 문자열

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

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

예 1:

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

예 2:

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

제약조건:

  • 1 <= n.길이 <= 18
  • 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. 가장 가까운 회문 찾기

으아악

설명:

  • generatePalindrome($firstHalf, $isOddLength):
    • 이 도우미 기능은 숫자의 전반부를 미러링하여 회문을 만듭니다.
으아악
  • 엣지 케이스:

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

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

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

연락처 링크

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

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

  • LinkedIn
  • GitHub

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

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!