이 게시물에서는 주어진 문자열이 회문인지 확인하는 일반적인 면접 질문을 살펴보겠습니다. 이 문제는 Java의 포인터, 루프 및 조건부 논리를 이해하는 데 훌륭한 연습이 됩니다.
주어진 문자열이 회문인지 확인하는 Java 메소드를 작성하세요. 회문은 앞뒤로 읽어도 같은 단어나 문구입니다(예: '정오' 또는 '부인').
이 솔루션은 두 포인터 기술을 활용하여 문자열의 양쪽 끝에서 가운데를 향해 이동하면서 문자를 확인합니다. 해당 위치의 문자를 비교하면 문자열을 뒤집을 필요 없이 회문인지 여부를 확인할 수 있습니다.
해결책 코드는 다음과 같습니다.
public class StringPalindromeQuestion { // Method to check if a given string is a palindrome private boolean isPalindrome(String string) { if (string != null) { for (int i = 0, j = string.length() - 1; i < string.length() / 2; i++, j--) { if (string.charAt(i) != string.charAt(j)) { return false; } } } return true; } public static void main(String[] args) { StringPalindromeQuestion palindrome = new StringPalindromeQuestion(); String oddString = "abcdcba"; // Palindrome with odd length String evenString = "abccba"; // Palindrome with even length String nonPalindrome = "asfgsa"; // Not a palindrome // Result: true System.out.println(palindrome.isPalindrome(oddString)); // Result: true System.out.println(palindrome.isPalindrome(evenString)); // Result: false System.out.println(palindrome.isPalindrome(nonPalindrome)); // Testing with null // Result: true System.out.println(palindrome.isPalindrome(null)); } }
1. 두 가지 접근 방식:
두 개의 포인터를 초기화합니다. 하나는 시작(i)에, 다른 하나는 끝(j)에 있습니다.
이 위치의 문자(string.charAt(i) 및 string.charAt(j))를 비교하고 각 비교 후에 i를 늘리고 j를 줄입니다.
루프는 string.length() / 2까지만 실행되므로 길이가 홀수인지 짝수인지에 관계없이 효율적인 순회가 보장됩니다.
2. 홀수 대 짝수 길이:
짝수 길이 문자열(예: "abccba")의 경우 이 메서드는 중간점까지 확인하므로 선택되지 않은 중간 문자가 없습니다.
홀수 길이 문자열(예: "abcdcba")의 경우 중간 문자는 당연히 회문 상태에 영향을 주지 않습니다.
3. Null 처리:
이 메서드는 NullPointerException을 방지하기 위해 처음에 문자열이 null인지 확인합니다.
홀수 길이 회문: "abcdcba"는 true를 반환합니다.
짝수 길이 회문: "abccba"는 true를 반환합니다.
비 회문형: "asfgsa"는 false를 반환합니다.
Null String: true를 반환합니다(이 구현에서는 null 입력이 회문으로 간주됩니다).
두 포인터 기술을 이해하는 것은 많은 문자열 기반 문제를 효율적으로 해결하는 데 중요합니다. 이 기술은 추가 공간 복잡성을 방지하고 불필요한 비교를 제한하여 코드 실행을 더 빠르게 만듭니다.
이 솔루션은 Java에서 회문을 확인하는 깔끔하고 효율적인 방법을 제공합니다. 포인터 조작 및 문자열 탐색에 대한 이해를 더욱 확고히 하려면 다양한 문자열 입력에 이 접근 방식을 사용해 보세요.
즐거운 코딩하세요!
위 내용은 문자열: 회문 확인의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!