문자열 Palindrome(회문(回文) 퀴즈
0912수업내용_
Palindrome(회문(回文))
사용자가 단어를 입력하면 해당 단어가 좌우대칭인지 판별해주는 프로그램을 만들어보세요.
해결방법
1> 맨 앞부터 글자를 하나씩 비교해 나간다(절반까지만)
2> 단어를 뒤집고 비교해서 똑같으면 좌우대칭이다
// String reverse = word(word.charAt(word.length() - 1 - word.length())); // >> word에 에러뜸
//
// if(word == reverse) {
// System.out.println("회문입니다.");
// } else {
// System.out.println("회문이 아닙니다");
// }
/*
거꾸로 :
System.out.println();
for (int i = 0; i < str.length(); ++i) {
System.out.print(str.charAt(str.length() - 1 - i));
}
제대로:
for (int i = 0; i< text2.length();++i) {
char c = text2.charAt(i);
System.out.print(text2.charAt(i));
}
이 두 for 문이 같다면 "좌우대칭입니다." 다르다면 "좌우대칭이 아닙니다."
*/
}
}
For문 안에 계속 돌려서 3번 이상 숫자가 나오는 것…
for문 밖으로 빼야한다.
=====> 풀이법 3가지
1. 단어의 맨 앞 인덱스부터 절반 인덱스까지 만 검사
2.단어를 뒤집고 비교해서 똑같으면 좌우대칭이다
++)
String reversed = "";
// " "; 이렇게 공백이 있도록 설정을 해서 뒤집은 문자열 reversed를 초기화할 때 공백 문자열로 시작하고,이후에 문자를 추가하는 방식으로 진행된 것
// 그렇게 되면 뒤집은 문자열의 첫 번째 문자가 공백이 되어버림 으로 자꾸 좌우대칭이 아니라고 나온 것이다.
for (int i = 0; i < len; ++i) {
reversed += word.charAt(len - 1 - i);
}
System.out.printf("원래글자 %s, 뒤집은글자 %s\n", word, reversed);
if (word.equals(reversed)) {
System.out.println("좌우대칭입니다.");
} else {
System.out.println("좌우대칭이 아닙니다.");
}
3. boolean 타입풀이