สมมติว่าเรามีสตริง s เราต้องตรวจสอบว่าสตริงที่กำหนดเป็นพาลินโดรมหรือไม่ เราต้องแก้ปัญหานี้โดยใช้ตัวชี้ใน C.
ดังนั้น หากอินพุตเป็นเหมือน s ="racecar" เอาต์พุตจะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ความยาว :=ขนาดของสตริง
- forward :=ชี้ไปที่อักขระตัวแรกของสตริง
- ย้อนกลับ :=ชี้ไปที่อักขระตัวสุดท้ายของสตริง
- ในขณะที่ตำแหน่งถอยหลัง>=ตำแหน่งไปข้างหน้า ทำ
- หากอักขระที่ชี้ไปทางด้านหลังเหมือนกับอักขระที่ชี้ไปข้างหน้า
- เพิ่มไปข้างหน้าและลดถอยหลัง 1
- อย่างอื่น
- ออกมาจากลูป
- หากอักขระที่ชี้ไปทางด้านหลังเหมือนกับอักขระที่ชี้ไปข้างหน้า
- ถ้าตำแหน่งเดินหน้า>=ตำแหน่งถอยหลัง แล้ว
- คืนค่า True
- คืนค่าเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
#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