본문 바로가기

알고리즘 with 자바

7. 회문 문자열

문제 설명

문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요.

단, 회문을 검사할 때 대소문자는 구분하지 않습니다.

 

입력예시: gooG

출력예시: YES

문제 풀이

일반적인 방법은 포문을 반만 돌면서 양끝을 서로 비교해 다른 부분이 있으면 바로 return fasle를 내보내는 방법이다.

public String solution(String s) {
	
	String result = "YES";
	int len = s.length();
	
	s = s.toLowerCase();
	
	for(int i = 0; i < len/2; i++) {
		if(s.charAt(i) != s.charAt(len-i-1)) {
			return "NO";
		}
	}
	
	return result;
}

 대소문자를 구분하지 않기 위해 전체를 소문자로 통일했으며, 양끝을 비교하기 위해 i와 len-i-1을 사용했다.

 

다른 방법으론 전체를 reserve 시키고 이를 equals 비교하는 방법이다.

public String solution2(String s) {
	
	String result = "NO";
	
	String reverseString = new StringBuilder(s).reverse().toString();
	
	if(s.equalsIgnoreCase(reverseString)) {
		result = "YES";
	}
	
	return result;
}

대소문자 구분하지 않고 비교하기 위해 equalsIgnoreCase를 활용했다.

'알고리즘 with 자바' 카테고리의 다른 글

피보나치 수열 with 재귀(메모이제이션)  (0) 2021.05.01
6. 중복문자제거  (0) 2021.04.15
5. 특정 문자 뒤집기  (0) 2021.04.11
4. 단어 뒤집기  (0) 2021.04.10
3. 문장 속 단어  (0) 2021.04.10