문자열에서 회문을 효과적으로 확인하는 방법
문자열에서 회문을 확인하려면 양쪽 방향에서 동일하게 읽는지 확인해야 합니다. 이 작업에 대한 간단한 접근 방식은 문자열을 문자 배열로 변환하고 인접한 요소를 비교하는 것입니다.
다음은 이 접근 방식의 샘플 구현입니다.
public class Aufg1 { // Main method for testing public static void main(String[] args) { String wort = "reliefpfpfeiller"; char[] warray = wort.toCharArray(); System.out.println(istPalindrom(warray)); } // Method for checking palindromes public static boolean istPalindrom(char[] word) { boolean palindrom = false; if (word.length % 2 == 0) { for (int i = 0; i < word.length / 2 - 1; i++) { if (word[i] != word[word.length - i - 1]) { return false; } else { palindrom = true; } } } else { for (int i = 0; i < (word.length - 1) / 2 - 1; i++) { if (word[i] != word[word.length - i - 1]) { return false; } else { palindrom = true; } } } return palindrom; } }
이 코드는 문자 배열을 반복합니다. , 반대쪽 끝에 있는 요소를 비교하여 일치하는지 확인합니다. 그러나 시작과 끝에서 시작하는 요소를 동시에 비교하는 보다 최적화된 접근 방식이 존재합니다.
개선된 코드:
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; }
예:
입력 문자열 "andna"를 문자열로 사용 예:
위 내용은 문자열이 회문인지 효율적으로 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!