String(스트링) 07. 회문문자열
* 사용 언어 : JAVA
* Inflearn의 자바(Java)알고리즘 문제풀이 : 코딩테스트 대비 강의내용 정리
1. 문제
앞 뒤로 읽을 때 같은 문자열인 회문 문자열을 받으면 Yes, 아니면 No를 출력하기
회문 문자열 검사시 대소문자 구분하지 않음
// 입력
gooG
// 출력
YES
2. 풀이
문자열의 첫 번째 인덱스부터 마지막 인덱스 len-1에서 i를 빼준 인덱스를 반복 비교하면 두 인덱스가 중간지점에서 만나게 된다.
회문문자열이므로 비교한 두 문자가 같으면 그대로 answer을 반환하고 아니면 "NO"로 값을 변경 후 반환한다.
또 다른 방법은 전달받은 문자열을 StringBuilder의 reverse() 메서드를 사용하여 뒤집어준다.
원래 입력받은 문자열과 뒤집은 문자열을 equals()메서드로 비교하여 answer을 반환하고 아니면 NO로 값을 변경 후 반환한다.
equals() 메서드는 대소문자를 구분하니 미리 대문자 또는 소문자로 변환해준다.
3. 코드
public class Main {
public String solution(String str) {
String answer = "YES";
str = str.toLowerCase();
int len = str.length();
for (int i = 0; i < len/2; i++) {
if (str.charAt(i) != str.charAt(len-i-1)) return answer = "NO";
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println(T.solution(str));
}
}
public class Main {
public String solution(String str) {
String answer = "YES";
str = str.toLowerCase();
String reversStr = new StringBuilder(str).reverse().toString();
if (!str.equals(reversStr)) return answer = "NO";
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println(T.solution(str));
}
}
4. Keword
- String
- equals()
- StringBuilder
- reverse()
'Algorithm' 카테고리의 다른 글
[자바 알고리즘 문제풀이] String 09. 숫자만 추출 (0) | 2022.03.21 |
---|---|
[자바 알고리즘 문제풀이] String 08. 유효한 팰린드룸 (0) | 2022.03.07 |
[자바 알고리즘 문제풀이] String 06. 중복 문자 제거 (0) | 2022.03.07 |
[자바 알고리즘 문제풀이] String 05. 특정 문자 뒤집기 (0) | 2022.03.07 |
[자바 알고리즘 문제풀이] String 04. 단어 뒤집기 (0) | 2022.03.06 |