สมมติว่าเรามีสตริง 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