>Java >java지도 시간 >Palindrome 문자열 검사를 어떻게 최적화할 수 있습니까?

Palindrome 문자열 검사를 어떻게 최적화할 수 있습니까?

DDD
DDD원래의
2024-12-23 17:35:09869검색

How Can We Optimize Palindrome String Checking?

회문 검사를 위한 코드 개선

문자열이 회문인지 확인하기 위해 양쪽 끝의 문자를 비교하는 방법을 개발했습니다. 중간쪽으로. 그러나 최적화의 여지는 있습니다.

최적화된 접근 방식:

다음 코드는 더 간단하고 효율적인 솔루션을 제공합니다.

public static boolean istPalindrom(char[] word) {
    int i1 = 0;
    int i2 = word.length - 1;
    while (i2 > i1) {
        if (word[i1] != word[i2]) {
            return false;
        }
        ++i1;
        --i2;
    }
    return true;
}

설명:

이 코드는 두 개의 포인터를 사용합니다. i1과 i2는 각각 단어의 시작과 끝으로 초기화됩니다. i2가 i1을 교차할 때까지 안쪽으로 반복합니다.

  • 단어[i1]과 단어[i2]의 문자가 일치하지 않으면 메서드는 false를 반환합니다.
  • 일치하면 두 포인터 모두 중앙을 향해 이동합니다: i1은 증가하고 i2는 감소합니다.

포인터가 교차하면 전체 단어가 성공적으로 비교되었으며 메서드가 true를 반환합니다.

예:

단어 "andna"의 경우:

  • 처음에는 i1이 0(단어의 시작)이고 i2는 4(단어의 끝)입니다. word).
  • 루프 반복:

    • i1(0)의 문자는 'a'입니다. i2(4)의 문자는 'a'입니다. 일치하므로 두 포인터를 가운데로 이동합니다.
    • i1(1)의 문자는 'n'입니다. i2(3)의 문자는 'n'입니다. 일치합니다.
    • i1(2)과 i2(2)가 교차했으므로 모든 문자가 성공적으로 비교되었습니다.

메서드가 true를 반환하여 확인합니다. 그 "andna"는 회문입니다.

위 내용은 Palindrome 문자열 검사를 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.