05. 회문 (Palindrome)
회문 (Palindrome)
순서를 거꾸로 읽어도 같은 단어인 회문인지 판단하는 코드 작성 (재귀함수)
예) `LEVEL` 은 거꾸로 읽어도 `LEVEL` 이기 때문에 true, `MOTOR` 는 거꾸로 읽으면 `ROTMO` 이기 때문에 false
public class Palindrome {
public static void main(String[] args) {
String name = "level";
char[] chars = name.toCharArray();
boolean isPalindrome = isPalindrome(chars);
System.out.println(isPalindrome);
}
private static boolean isPalindrome(char[] name) {
if (name.length <= 1) {
return true;
}
if (name[0] == name[name.length-1]) {
return isPalindrome(Arrays.copyOfRange(name, 1, name.length-1));
} else {
return false;
}
}
}
배열의 크기가 1이하인 경우 true 를 리턴한다
1이하로 적용하는 이유는 예를들어서 level 에서 마지막 v는 비교할 게 자신이기 때문에 비교해도 true 가 나오기 때문
두 문자열이 다른 경우에는 false 를 리턴한다
배열의 맨 앞과 맨뒤를 비교후 같은 경우 다음 문자를 비교하기 위해 재귀함수를 사용하며 배열을 잘라낸다
'25. 자료 구조와 알고리즘 > 나의 알고리즘' 카테고리의 다른 글
07. 재귀함수 (Recursive Call) - 경우의 수 구하기 (0) | 2021.09.16 |
---|---|
06. 재귀함수 (Recursive Call) - 홀수와 짝수에 따라 분기처리 (0) | 2021.09.11 |
04. 재귀함수 (Recursive Call) (0) | 2021.09.09 |
03. 삽입 정렬 (Insertion Sort) (0) | 2021.09.09 |
02. 선택 정렬 (Selection Sort) (0) | 2021.09.08 |
댓글
이 글 공유하기
다른 글
-
07. 재귀함수 (Recursive Call) - 경우의 수 구하기
07. 재귀함수 (Recursive Call) - 경우의 수 구하기
2021.09.16 -
06. 재귀함수 (Recursive Call) - 홀수와 짝수에 따라 분기처리
06. 재귀함수 (Recursive Call) - 홀수와 짝수에 따라 분기처리
2021.09.11 -
04. 재귀함수 (Recursive Call)
04. 재귀함수 (Recursive Call)
2021.09.09 -
03. 삽입 정렬 (Insertion Sort)
03. 삽입 정렬 (Insertion Sort)
2021.09.09