안녕하세요. 언제나 휴일입니다.
앞 뒤가 똑같은 문을 회문(Palindrome)이라고 말합니다. “HannaH”처럼 앞으로 읽거나 뒤로 읽거나 같은 문을 말하는 것이죠.
이번에는 회문인지 판별하는 소스 코드입니다.
알고리즘
회문인지 판별(str)
len = 문자열 길이
반복(i:0->len/2)
조건(str[i] != str[len-i-1])
거짓 반환
참 반환
소스 코드
//회문(Palindrome) //앞 뒤가 똑같은 문을 회문(Palindrome) 이라고 합니다. #include <string.h> #include <stdio.h> #include <malloc.h> #include <stdlib.h> int Palindrome(char str[]); int main() { char test_str[5][100] = { "HannaH",//회문인 예 "ReliefpfeileR",//회문인 예 "Root",//회문이 아닌 예 "RotoR",//회문인 예 "RentneR"//회문인 예 }; int i = 0; for (i = 0; i<5; i++)//5번 테스트 { if (Palindrome(test_str[i]))//회문이 맞으면 { printf("%s 는 회문임\n", test_str[i]); } else//회문이 아니면 { printf("%s 는 회문이 아님\n", test_str[i]); } } return 0; } int Palindrome(char str[]) { int len = 0; int i = 0; //거짓인 문자(널문자)가 나올때까지 이동 for (len = 0; str[len]; len++); //len = strlen(str); 과 같은 코드입니다. for (i = 0; i<(len / 2); i++)//i를 0~len/2까지 이동하면서 반복 { if (str[i] != str[len - i - 1])//str[i]와 str[len-i-1]이 서로 다르면 { return 0;//회문이 아니므로 0 반환 } } return 1;//회문이므로 1 반환 }