Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ตรวจสอบว่าสตริงเป็น palindrome ใน C โดยใช้พอยน์เตอร์


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