문자열 s가 있다고 가정합니다. 주어진 문자열이 회문인지 아닌지 확인해야 합니다. C에서 포인터를 사용하여 이 문제를 해결해야 합니다.
따라서 입력이 s ="racecar"와 같으면 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 길이 :=문자열의 크기
- forward :=문자열의 첫 번째 문자를 가리킴
- reverse :=문자열의 마지막 문자를 가리킴
- 동안 역방향 위치>=정방향 위치, do
- 역방향으로 가리키는 문자가 정방향으로 가리키는 문자와 같으면
- 앞으로 증가 및 뒤로 1 감소
- 그렇지 않으면
- 루프에서 나오다
- 역방향으로 가리키는 문자가 정방향으로 가리키는 문자와 같으면
- 정방향 위치>=역방향 위치이면
- 참 반환
- 거짓을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
#include <stdio.h> #include <string.h> int solve(char *string){ int length; char *forward, *reverse; length = strlen(string); forward = string; reverse = forward + length - 1; for (forward = string; reverse >= forward;) { if (*reverse == *forward) { reverse--; forward++; } else break; } if (forward > reverse) return 1; else return 0; } int main(){ char string[] = "racecar"; printf("%d", solve(string)); }
입력
"racecar"
출력
1