Giả sử có chuỗi s. Kiểm tra chuỗi có phải palindrome hay không. Giải quyết bằng con trỏ trong C.
Nếu đầu vào s = "racecar", đầu ra sẽ là True.
Các bước giải:
- length := độ dài chuỗi
- forward := trỏ đến ký tự đầu chuỗi
- reverse := trỏ đến ký tự cuối chuỗi
- while vị trí reverse >= vị trí forward, làm:
- nếu ký tự reverse trùng ký tự forward, thì tăng forward, giảm reverse 1 đơn vị
- ngược lại thoát vòng lặp
- nếu vị trí forward > reverse, trả về True
- trả về False
Xem triển khai để hiểu rõ hơn:
Ví dụ
#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));
}
Đầu vào
"racecar"
Đầu ra
1